Vous n'êtes pas identifié(e).
Bonjour,
j'ai la configuration suivante Postgresql 9.0 sur Centos 5.5.
Lorsque je veux interroger les statistiques j'ai le message suivant
ATTENTION : pgstat wait timeout
j'ai trouver quelques info sur le sujet mais pas de piste ou axe de recherche
Si quelqu'un a déjà rencontré ce problème merci d'avance de votre aide
A+
Hors ligne
Habituellement, ça veut dire qu'il n'a pas réussi à écrire le fichier de statistiques dans le temps imparti. Ça peut avoir plusieurs causes :
- Énormément d'objets (et donc un gros fichier de stats)
- Des disques très chargés (et donc du mal à écrire les fichiers)
Ou les deux en même temps évidemment
Quelle taille fait votre fichier pgstat.stat (habituellement dans pg_stat_tmp)
Marc.
Hors ligne
Merci pour ta réponse rapide, je viens de vérifier mon fichier est dans Global et non dans pg_stat_tmp je sais pas si cela a de l'importance et sa taille n'est pas enorme 8 Mo
Hors ligne
8Mo ce n'est pas énorme, mais c'est déjà conséquent. Ça dépend vraiment des disques en dessous… mais il faudrait qu'ils soient vraiment saturés pour que ça se produise.
- Ça se produit en permanence ou seulement ponctuellement ?
- Est-ce que le processus «postgres: stats collector process» est actif ?
Marc.
Hors ligne
Il faudrait vérifier la valeur du paramètre stats_temp_directory. Par défaut, il vaut pg_stat_tmp. Si pgstat.stat n'est pas dans ce répertoire (ou dans celui visé par le paramètre stats_temp_directory), c'est que PostgreSQL n'arrive pas à le copier dans ce répertoire et du coup le collecteur de stats ne l'y trouve pas.
Je pense vraiment qu'il faut creuser dans cette direction.
Guillaume.
Hors ligne
Oui j'ai regardé le fichier postgres.conf, j'ai décommenté la ligne stats_temp_directory qui est egale à pg_stat_tmp les autres paramètres actifs sont
track_activities=on
track_counts=on
track_functions=all (pl au départ)
mais j'ai toujours pasde fichier dans le repertoire indiqué
pour répondre à Marc le phénomène est en permanence
Quand au process je pense que c'est lié à track_activities (désolé je suis débutant) j'ai utilisé la fonction top et aussi ps avec un grep sur postgres mais j'ai rien vue
Hors ligne
Après avoir décommenté la ligne, avez vous demandé à PostgreSQL de recharger la configuration ?
PostgreSQL a t'il les droits en écriture sur ce répertoire ?
Pour le nom du processus, essayez «ps -ef | grep postgres»
Marc.
Hors ligne
Est-ce que le répertoire pg_stat_tmp existe ? est que l'utilisateur postgres a droit de créer un fichier dans ce répertoire ? que se passe-t-il si vous copiez vous-même le fichier du répertoire global vers le répertoire pg_stat_temp ? (j'ai bien dit copier et non pas déplacer)
Guillaume.
Hors ligne
Oui j'ai bien fait un restart du demon posgres
ci dessous le retour de la commande que tu m'as donné je vois pas le process en question
(j'ai masqué les nom de user et @ip par des xxxxx)
[root@DIN04009 data]# ps -ef |grep postgres
postgres 1419 1 0 10:44 ? 00:00:00 /usr/pgsql-9.0/bin/postmaster -p 5432 -D /var/lib/pgsql/9.0/data
postgres 1421 1419 0 10:44 ? 00:00:00 postgres: logger process
postgres 1423 1419 0 10:44 ? 00:00:00 postgres: writer process
postgres 1424 1419 0 10:44 ? 00:00:00 postgres: wal writer process
postgres 1425 1419 0 10:44 ? 00:00:09 postgres: xxxxxx(4240) idle
postgres 1430 1419 2 10:44 ? 00:01:14 postgres: xxxxx(3738) idle
postgres 1431 1419 1 10:44 ? 00:00:54 postgres: xxxxx(3739) idle
postgres 1432 1419 0 10:44 ? 00:00:02 postgres: xxxx(3825) idle
postgres 1433 1419 0 10:44 ? 00:00:31 postgres: xxxx(4050) idle
postgres 1437 1419 0 10:44 ? 00:00:02 postgres: xxxx(4335) idle
postgres 1438 1419 0 10:44 ? 00:00:13 postgres: xxxx(1318) idle
postgres 1439 1419 0 10:45 ? 00:00:23 postgres: xxxx(4978) idle
postgres 1440 1419 0 10:45 ? 00:00:01 postgres: xxxx(3076) idle
postgres 1452 1419 0 10:47 ? 00:00:00 postgres: xxxx(4938) idle
postgres 1462 1419 0 10:49 ? 00:00:01 postgres: xxxx(3388) idle
postgres 1471 1419 0 10:52 ? 00:00:02 postgres: xxxx(2337) idle
postgres 1477 1419 0 10:53 ? 00:00:01 postgres: xxxx(1911) idle
postgres 1547 1419 0 11:06 ? 00:00:00 postgres: xxxx(3925) idle
postgres 1548 1419 0 11:06 ? 00:00:01 postgres: xxxx(3926) idle
postgres 1552 1419 0 11:08 ? 00:00:00 postgres: xxxx(3934) idle
postgres 1579 1419 0 11:22 ? 00:00:00 postgres: xxxx(1374) idle
postgres 1580 1419 0 11:22 ? 00:00:00 postgres: xxxx(1375) idle
postgres 1590 1419 0 11:24 ? 00:00:00 postgres: xxxx(4048) idle
postgres 1591 1419 0 11:24 ? 00:00:00 postgres: xxxx(4809) idle
postgres 1614 1419 0 11:34 ? 00:00:00 postgres: xxxx(2777) idle
postgres 1617 1419 0 11:36 ? 00:00:00 postgres: xxxx(1425) idle
postgres 1618 1419 0 11:36 ? 00:00:00 postgres: xxxx(1426) idle
postgres 1619 1419 0 11:36 ? 00:00:00 postgres: xxxx(3625) idle
postgres 1620 1419 0 11:36 ? 00:00:00 postgres: xxxx(3626) idle
postgres 1624 1419 0 11:37 ? 00:00:00 postgres: xxxx(3635) idle
postgres 1625 1419 0 11:37 ? 00:00:00 postgres: xxxx(1429) idle
postgres 1634 1419 0 11:41 ? 00:00:00 postgres: xxxx(2810) idle
postgres 1635 1419 0 11:41 ? 00:00:00 postgres: xxxx(2811) idle
postgres 1636 1419 0 11:41 ? 00:00:00 postgres: xxxx(2812) idle
root 1648 1233 0 11:43 pts/0 00:00:00 grep postgres
[root@DIN04009 data]#
Hors ligne
Il n'y a pas de collecteur de statistiques. Il a du s'arrêter en erreur. Il devrait y avoir un message d'insulte dans la log, expliquant pourquoi il a refusé de démarrer.
Marc.
Hors ligne
J'ai essayé de simuler ça en changeant le répertoire pg_stat_tmp par un fichier pg_stat_tmp (je sais, je suis méchant ). J'ai eu un stat timeout et plein d'autres messages du style :
WARNING: could not open statistics file "pg_stat_tmp/pgstat.stat": Not a directory
LOG: could not open temporary statistics file "pg_stat_tmp/pgstat.tmp": Not a directory
WARNING: could not open statistics file "pg_stat_tmp/pgstat.stat": Not a directory
LOG: could not open temporary statistics file "pg_stat_tmp/pgstat.tmp": Not a directory
WARNING: pgstat wait timeout
WARNING: could not open statistics file "pg_stat_tmp/pgstat.stat": Not a directory
LOG: could not open temporary statistics file "pg_stat_tmp/pgstat.tmp": Not a directory
LOG: could not open temporary statistics file "pg_stat_tmp/pgstat.tmp": Not a directory
À noter que, pour moi, le stat collector est démarré. Un autre problème pourrait être que le port UDP est bloqué pour une raison ou une autre.
Guillaume.
Hors ligne
Je viens de regarder le log suite au redémarrage est j'ai une lignes suivantes je creuse et je vous informe dés que j'ai trouvé
2011-03-22 10:44:43 CETLOG: n'a pas pu résoudre « localhost » : Nom ou service inconnu
2011-03-22 10:44:43 CETLOG: désactivation du récupérateur de statistiques à cause du manque de socket
fonctionnel
2011-03-22 10:44:43 CETATTENTION: autovacuum non exécuté à cause d'une mauvaise configuration
Hors ligne
Le listen_adresses vaut localhost dans le fichier de configuration ? Si c'est le cas, on dirait que localhost n'est pas défini dans le /etc/hosts… ce qui est étrange, et certainement pas par défaut
Marc.
Hors ligne
comme je l'ai écrit je suis débutant, j'avais modifier le fichier hosts pour référencé mon serveur @ip nom machine
J'avais supprimer la ligne localhost pointant sur 127.0.0.1 je viens de la rajouter
redémarrage du démon postgres plus d'erreur dans les logs les process stat collector et autovacuum sont présents
ma requette de stat me donne un résultat
Un grand merci à tous les 2 pour votre aide et patience
A+ pour de nouvelles question
Je sais pas comment mettre résolu sur le forum
Hors ligne
Généralement, on ne met pas de tag résolu. Faudrait que je regarde si c'est possible à configurer...
Guillaume.
Hors ligne