TOOLinux

Le journal du Libre

PostgreSQL : analyse des performances

mercredi 4 novembre 2009

pg_stat_statements est un module de contribution PostgreSQL 8.4. Il permet d’avoir des statistiques sur ce que subit le serveur Postgres : requêtes les plus utilisées, requêtes lentes, nombre de lignes renvoyées, par utilisateur et par base. pg_state_statements est très rapide, fait ses analyses à la volée, et n’a pas besoin d’écrire dans un fichier. Il ne génère ainsi que très peu de charge supplémentaire.

Pour les utilisateurs qui ne sont pas encore à la version 8.4 de PostgreSQL, il n’existe qu’une seule solution : activer les logs et utiliser un outil d’analyse tiers.

En plus du fait que le traitement des logs est une tâche longue et fatidieuse, son activation nuit aux performances :

  • Écriture dans un fichier (génération d’I/O disk)
  • Découpage des requêtes trop longues (en cas d’utilisation de syslog)
  • Taille des fichiers de logs gigantesques (plusieurs Go lorsque toutes les requêtes sont enregistrées)

Il est, cependant, possible de limiter l’impact de la fonctionnalité de log sur les performances :

  • Activation des logs limités dans le temps : ce n’est pas une solution très efficace car il est rare qu’un problème survienne pendant une période définie d’avance (aucune analyse ne serait nécessaire si les problèmes étaient prévisibles !).
  • On ne trace que les requêtes lentes : ceci n’est pas forcément une bonne solution lorsque vous avez des applications (droguées d’ORM en tout genre) qui font de petites requêtes à répétition.

Après avoir fait votre choix dans votre stratégie et maintenan que vous disposez de quelques inforamtions, il faut passer à l’analyse. Pour cela, il existe peu d’outils :

  • Practical Query Analyser (pqa) : outil, développé en Ruby, permettant d’analyser et générer des rapports (texte ou HTML) sur les requêtes contenues dans un fichier de log. Cet outil semble cependant abandonné, et n’a pas vu de mise à jour depuis novembre 2005.
  • pgFouine : cet outil PHP vous propose d’analyser vos logs pour mettre en forme des rapports de performance au format HTML. Cet outil jouit d’une très bonne maturité, comme le montre son cycle de développement (sortie d’une release tous les ans).
  • pgLogAnalysis : release pour la première fois le 5 Octobre dernier, cet outil C/Qt permet d’analyser vos logs, pour réaliser des statistiques et des graphiques. Pas aussi évolué que pgFouine en terme de fonctionnalités, il s’avère prometteur avec sa vitesse de traitement (plus de 20 millons de requêtes analysées en 1h30).

Patrick GUIRAN