PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 24/03/2010 12:57:04

Mr_Coinche
Membre

Déconnection intempestive

Bonjour,

Je dispose d'un application c++ qui se connecte a une base de donnée postgreSQL 8.4.2.

Environ deux trois fois par jour, lors de l'exécution d'une requête (select, insert ou update), j'obtiens un message d'erreur. Et ensuite la connexion est perdue pour l'application, je suis obligé de la redémarrer.

Voici ce message :


Server closed the connexion unexpectedly
This probably means the server terminated abnormally before or while processing the request

Je tiens à préciser que le serveur qui héberge postgreSQL, est sous Windows Server 2008, il y a peu il était sous windows server 2003 (et postgreSQL 8.2.5)  et l'application a fonctionné sans anomalie durant 1 an et demi.

La configuration Windows server 2008 + postgreSQL 8.2.5 m'amenait les même erreur de connexion.

Si quelqu'un a une idée je suis preneur.

Hors ligne

#2 24/03/2010 15:58:10

Marc Cousin
Membre

Re : Déconnection intempestive

Server closed the connexion unexpectedly
This probably means the server terminated abnormally before or while processing the request

Signifie que le processus qui effectue votre opération a planté (erreur mémoire probablement). Il faudrait trouver ce qui l'a amené à ce problème. Pour cela, recherchez au moment de l'erreur ce qui est tracé dans le fichier horodaté du répertoire pg_log.


Marc.

Hors ligne

#3 24/03/2010 18:14:20

Mr_Coinche
Membre

Re : Déconnection intempestive

Bonjour,

J'ai ces deux lignes d'erreur :

2010-03-24 10:57:04 CETLOG:  n'a pas pu recevoir les données du client : Unknown winsock error 10061
2010-03-24 10:57:04 CETLOG:  fin de fichier (EOF) inattendue de la connexion du client

il a l'air de dire que la connexion client est coupée, ce qui coïncide avec ce que j'observe coté appli, par contre je ne sais pas a quoi correspond cette erreur winsock

Hors ligne

#4 24/03/2010 18:37:58

Marc Cousin
Membre

Re : Déconnection intempestive

L'erreur 10061 est habituellement l'erreur qu'on reçoit quand un serveur vous refuse une connexion, ce qui n'est manifestement pas votre cas. Vous n'auriez pas un antivirus ou firewall sur votre serveur ? Si c'est le cas, supprimez le, et vérifiez que celà provient bien de lui.


Marc.

Hors ligne

#5 24/03/2010 18:58:59

Mr_Coinche
Membre

Re : Déconnection intempestive

C'est ce que je me suis dit quand j'ai regardé la signification du code erreur. Le firewall utilisé est celui de windows, et l'anitvirus est kaspersky, je pense pouvoir desactivé le firwall de windows au moins pour le réseau local. Quand a kaspersky je ne suis pas sur de pouvoir de supprimer.

D'autant que l'erreur survenant assez rarement, et complètement aléatoirement, il m'est difficile meme en un désactivant l'antivirus et le par feu 1 semaine d'être sur que l'un ou l'autre sont a l'origine du problème.

Ceci dit je vais quand même tester.

Hors ligne

#6 24/03/2010 19:02:36

Marc Cousin
Membre

Re : Déconnection intempestive

Bon courage smile


Marc.

Hors ligne

#7 26/03/2010 10:22:39

Mr_Coinche
Membre

Re : Déconnection intempestive

Hum j'ai désactivé le par feu et y a toujours des erreurs.

Par contre, je me suis rendu compte que y a rien de loggué dans le fichier pg_log, la derniere fois j'avais trouvé un message d'erreur. Mais il était pas tout a fait a l'heure du plantage, j'métait dit que c t peut être du a l'heure du serveur. Mais ce matin , multiple plantage et aucun log dans pg_log.

Par contre ces des erreurs, mais mon appli plante et se met a freezer. J'ai pas de message box m'indiquant une rreur particuliere.
Et cela n'arrive que sur UN seul des pc ou l'appli tourne.

Ca peut venir d'ou du coup ? sans doute du coté du pc concerné ? non ?

Dernière modification par Mr_Coinche (26/03/2010 10:33:21)

Hors ligne

#8 26/03/2010 12:32:39

Marc Cousin
Membre

Re : Déconnection intempestive

L'antivirus est toujours en place ? Parce que c'est lui le coupable idéal. C'est habituellement eux qui déclenchent ce genre de problèmes.


Marc.

Hors ligne

#9 26/03/2010 12:39:26

Mr_Coinche
Membre

Re : Déconnection intempestive

On parle bien de l'antivirus sur le serveur ?

Je ne l'ai pas desintallé, mais désactivé.

Je viens d'observé quelque chose d'autre de suspect.
Le problème est réapparu, par contre lors que j'ai relancé mon appli derrière, j'avais systématiquement un message de connexion timeout (javais baissé le paramètre a 1seconde).

J'ai donc été sur le serveur et j'ai bougé la souris, pour le sortir de son état de "veille" (alors qu'il ne se met jamais en veille normalement, c'est juste l'écran qui était éteint).

J'ai ensuite pu me reconnecter depuis mon application....

Autre chose suspecte dans pg admin, >> état du serveur, il y avait plusieurs connexions ouvertes entre le serveur et les pc. Je pense que ces des connexions qui existait et qui ont été sugette à un plantage et du coup elle ne sont pas fermé coté serveur...

Hors ligne

#10 26/03/2010 12:49:19

Marc Cousin
Membre

Re : Déconnection intempestive

Donc problème système Wendows à priori. Désolé, on sort de mon domaine de compétences smile


Marc.

Hors ligne

#11 29/03/2010 08:49:12

Mr_Coinche
Membre

Re : Déconnection intempestive

Bon, je reviens car en fait, apperement l'erreur que j'expliquais précédemment, ou j'ai eu besoin de bouger la souris du serveur pour qu'il accepte a nouveau ma connexion, était un hasard.

Ce matin j'ai relancé kaspersky, et j'ai eu une nouvelle fois l'erreur (au bout de deux minutes d utilisation), le message d'erreur


Server closed the connexion unexpectedly
This probably means the server terminated abnormally before or while processing the request

Donc c'est POSSIBLEMENT kaspersky qui me provoque cette erreur. ( ca demande encore des tests)
Et dans le log, javais bien le message


2010-03-24 10:57:04 CETLOG:  n'a pas pu recevoir les données du client : Unknown winsock error 10061
2010-03-24 10:57:04 CETLOG:  fin de fichier (EOF) inattendue de la connexion du client

Donc ca semble correspondre

Sauf, que j'ai une autre erreur qui m'arrive de temps autre , un message d'erreur qui m'indique "unable to find table XXX" alors que la table existe dans la base. Mais il n'arrive pas à chaque fois, et de nombreuse fois donc, la table est trouvée...

Le problème c'est qu'il, il n'y a pas de log d'erreur particulier qd je reçois cette erreur.

Après avoir tester d'appeler VOLONTAIREMENT une table inexistante dans ma base, j'obtiens le meme message d'erreur sur mon appli, (a coup sur cette fois tongue), et toujours pas de log dans les fichiers logs horodatés.

Donc je voulais savoir si tu avais une idée sur l'origine de l'erreur ?

Le driver pourrait-il être en cause ?

Et sinon est-il possible d'obtenir plus de log dans postgresql ? par exemple logué toute les requête qui sont reçues ? ou autre type de log ?


[Edit] : Le message unable to find XXX, vient peut être d'une déconnexion en fait... puisque a l'heure ou il arrive j'observe une connection ouverte dans postgresql, sur l'interface "état du serveur"

[re-edit] Dailleur j'ai des doutes sur mon driver postgresql, car il y a deux requetes que j'ai jamais réussi a éxécuter correctment depuis mon appli, il n'y avait pas de plantage, mais elle renvoyait systematiquement 0 réponses. Alors que qd j'utilisait ODBC , pas de pb....

Dernière modification par Mr_Coinche (29/03/2010 09:03:21)

Hors ligne

#12 29/03/2010 09:17:28

gleu
Administrateur

Re : Déconnection intempestive

Vous n'indiquez pas le nom de la table. Si celui-ci contient des minuscules/majuscules, pensez à bien placer des guillemets doubles autour du nom de la table.

Si ce n'est pas ce problème, merci d'indiquer la requête réelle et le message d'erreur réel (ie, copier/coller), ça permettra de vous éviter plus efficacement.

Pour tracer toutes les requêtes, vous pouvez mettre log_min_duration_statement à 0 ou log_statement à all. Attention, à ne pas le faire pour les deux sinon chaque requête sera tracée deux fois.

Quant au problème de driver, votre application utilise quoi comme driver ?


Guillaume.

Hors ligne

#13 29/03/2010 09:31:10

Mr_Coinche
Membre

Re : Déconnection intempestive

Les noms de tables "non trouvées" contiennent effectivement des majuscules, mais j'ai bien placé le nom des table entre guillemets.

Le message d'erreur est :


Unable to find table Clients


La requete devait être (sans les caractère d'échappement de mon appli) :



SELECT * FROM "Clients" WHERE "numCompte" ILIKE '%50';



En fait la requête est générée par un objet du framework que j'utilise, et il n'utilise pas * qd il construit la requête, il sélectionne explicitement toutes les colonne de la table qu'il appel.

Parfois c'est une autre table , je ne crois pas que ca soit arrivé sur une table qui n'a pas de majuscule dans son nom.. (cecid dit 90% de mes tables on une majuscule dans leur noms).

Le problème c'est que, la dernière fois que j ai eu le message, c'était pour la table Clients, mais la table Clients, est appelé très souvent, et la plupart du temps, je n'ai pas d'erreur.

Merci pour les info je vais tenter de loggué toutes les requêtes pour en savoir plus. Les log des requetes seront il toujours dans le même fichier ?

J'utilise le driver QPSQL de Qt, que j'ai compilé moi même, à partir de la version 8.4.2 de postgreSQL (que j'utilise sur le serveur).

Hors ligne

#14 29/03/2010 09:52:29

gleu
Administrateur

Re : Déconnection intempestive

"Unable to find table Clients" n'est pas un message de PostgreSQL, c'est un message du framework.

Le mieux que vous ayez à faire est de regarder dans les log de PostgreSQL. S'il a détecté une erreur sur une requête, il trace la requête avec l'erreur. C'est ça qui nous intéresse. Pour l'instant, en ce qui me concerne, seul le framework semble avoir détecté un problème mais rien ne montre que PostgreSQL aussi.


Guillaume.

Hors ligne

#15 29/03/2010 11:39:13

Mr_Coinche
Membre

Re : Déconnection intempestive

Oui je crois que c'est un message du framework, qui apparait en fait lorsque la connexion est rompue...

Sauf que ça n'arrivait jamais qd postgreSQL etait hebergé sous Win server 2003, masi depuis que c'est 2008...

Je vais attendre que l'erreur se reproduise et voir dans le log si quelque chose a été enregistré.

Hors ligne

#16 29/03/2010 11:48:12

gleu
Administrateur

Re : Déconnection intempestive

Avez-vous mis à jour votre version de PostgreSQL ? une 8.4.3 est disponible et corrige certaines choses sous Windows.


Guillaume.

Hors ligne

#17 29/03/2010 13:55:08

Mr_Coinche
Membre

Re : Déconnection intempestive

Non, mais je vais le faire du coup ! Sait-on jamais.

Hors ligne

#18 29/03/2010 14:08:27

gleu
Administrateur

Re : Déconnection intempestive

Oui, c'est un peu l'idée dans lequel j'ai ajouté la note. Je n'ai aucune idée si ça corrige le problème mais ça ne peut rien aggraver en tout cas.


Guillaume.

Hors ligne

Pied de page des forums