Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
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
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
Bon courage
Marc.
Hors ligne
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
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
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
Donc problème système Wendows à priori. Désolé, on sort de mon domaine de compétences
Marc.
Hors ligne
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 ), 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
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
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
"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
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
Avez-vous mis à jour votre version de PostgreSQL ? une 8.4.3 est disponible et corrige certaines choses sous Windows.
Guillaume.
Hors ligne
Non, mais je vais le faire du coup ! Sait-on jamais.
Hors ligne
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
Pages : 1