2009-05-21 9 views
2

Dans notre projet, nous utilisons postgresSql (8.3) comme serveur de base de données, mais nous rencontrons rarement le problème (une fois de temps en temps). dans le fichier journal que je vois erreur commeLa tentative de connexion a échoué dans le serveur PostgreSQL

****Connection attempt failed**** 

cela signifie pour moi que, l'application tente d'obtenir l'objet de connexion à partir du serveur DB mais il était infructueuse.

Chose étrange, lorsque je redémarre le serveur de base de données ou le serveur Web (Tomcat), cela fonctionne normalement. J'obtiendrai rarement cette erreur.

+0

Pouvez-vous fournir plus d'informations sur votre environnement, les applications car la cause peut être en dehors de postgres. –

+0

Est-ce cette erreur dans le journal de tomcat? Si oui, existe-t-il une exception backtrace? Y a-t-il des erreurs dans le journal postgresql à cette époque? – araqnid

+0

Besoin de plus d'informations pour cela. –

Répondre

0

Ceci est courant dans les applications Web lorsqu'un utilisateur annule la requête et que le serveur interrompt la connexion à mi-requête. Il semble que cela n'arrête pas vraiment le serveur?

1

Voici quelques choses qui pourraient causer ce problème, sans plus de détails je ne peux pas en dire plus.

1. Erreur de réseau. Il est possible qu'une partie de la chaîne de connexion ne soit pas transmise à PostgreSQL. Voir le point 2.

2.La chaîne de connexion est corrompue. La chaîne de connexion est-elle créée dynamiquement?

3.Problème dans le pool de connexions. Cela devrait cependant provoquer une erreur dans votre pool de connexion. Sans savoir quel type de pool de connexion vous utilisez, je ne peux pas l'exclure.

1

Il se peut que le nombre maximal de connexions soit dépassé. Regardez dans le fichier postgresql.conf pour le paramètre max_connections, sa valeur par défaut est 100 sur la plupart des versions.

netstat -tn | grep -c 5432 

Doit vous donner une approximation du nombre de connexions actuellement ouvertes.

0

Assurez-vous de fermer les ressources (connexion, instruction, jeu de résultats) dans le bloc finally après les avoir ouvertes. Si vous utilisez un pool de connexions, assurez-vous également que sa taille maximale n'est pas trop élevée.

Questions connexes