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

#1 23/11/2009 14:36:10

Hal
Membre

Requete figée sans activité sur le serveur

Bonjour,

Nouvel utilisateur de PostgreSQL (depuis 3 semaines maintenant), je suis ravi de découvrir ce moteur.
Je rencontre malgré tout une petite difficulté avec un batch qui lance une requête qui tourne en moins d'une seconde habituellement et qui de temps en temps met plus de 9h à s'executer, avec un core à 100%.
J'ai beau regarder, je ne vois pas ce qui bloque, sachant que le serveur est actuellement utilisé 1 fois par heure pour un traitement de 5 minutes, avant que soit lancée ma requête. Lorsque ma requête met 9h, mon traitement continue de s'exécuter une fois toute les heures, sans mettre plus de temps.

Avec PGAdmin, j'ai lancé la fenêtre "Etat du serveur" qui me renseigne sur les process en cours, et l'état des verrous.
Ma requête est actuellement lancée depuis 1h30, et si je regarde il n'y a qu'elle en cours d'activité (les autres process sont à <IDLE>). Au niveau des verrous, il n'y a qu'elle qui en pose, tous en "AccessShareLock", sauf un en "ExclusiveLock" (Le XID est le même que le TX pour ce dernier).

Soyons honnête, je n'y comprends pas grand chose et je ne sais par ou commencer. Si quelqu'un ici avait la gentillesse de m'indiquer une voie, je me ferais un plaisir de la suivre. C'est mon dernier blocage avant de lancer mon application en production...

Merci d'avance pour tout,

Cordialement,

Alexis.

Hors ligne

#2 23/11/2009 14:43:59

Marc Cousin
Membre

Re : Requete figée sans activité sur le serveur

- De quelle version du moteur s'agit il ?
- Ça ressemble à un changement de plan. On verra la requête dans un second temps, mais si vous avez la chance d'avoir une 8.4, nous devrions pouvoir trouver ce qui ne va pas rapidement.


Marc.

Hors ligne

#3 23/11/2009 15:09:59

Hal
Membre

Re : Requete figée sans activité sur le serveur

Bonjour,

Tout d'abord merci pour votre réponse particulièrement rapide.
SELECT VERSION(); me renvoi :
"PostgreSQL 8.4.1 on x86_64-pc-linux-gnu, compiled by GCC gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2, 64-bit"

Nous avons donc la chance d'être en 8.4 wink
Je dois vous avouer que je suis tout ouïe smile
(Le changement de plan pourrait se concevoir, le traitement qui tourne toutes les heures remplissant la table...)

Cordialement,

Alexis.

Hors ligne

#4 23/11/2009 15:25:33

Marc Cousin
Membre

Re : Requete figée sans activité sur le serveur

Je vous conseille donc d'installer le module contrib auto_explain :
http://docs.postgresql.fr/8.4/auto-explain.html

(étant donné que c'est du contrib, c'est un peu plus pénible à installer, mais ça devrait vraiment aider).
Le principe de ce module est de vous fournir le plan de toute requête dépassant n secondes dans la log. Vous le paramétrez à 60s de durée minimale par exemple, et vous saurez ce qui change dans le plan par rapport au plan normal. Il nous faudra découvrir la cause à ce moment là, mais cela devrait être jouable (il faudra trouver où l'estimation était fausse dans le plan).


Marc.

Hors ligne

Pied de page des forums