Téléchargement du traqueur pour PostgreSQL 12, 13, 14, 15, 16, 17
Téléchargement du traqueur pour PostgreSQL 11
Téléchargement du traqueur pour PostgreSQL 10
Téléchargement du traqueur pour PostgreSQL 9.6
Téléchargement du traqueur pour PostgreSQL 9.5
Téléchargement du traqueur pour PostgreSQL 9.4
Téléchargement du traqueur pour PostgreSQL 9.3
Journal des changements
Signalement de bugs via le forum
Licence identique à celle de PostgreSQL, open source type BSD
Dossier des versions
Cet article vient en complément de celui sur la traque dune situation de verrouillage. Le parallélisme complique-t-il le diagnostic ?
Les ressources manquent sur le serveur, un truncate est bloqué ... il est temp danalyser avec le traqueur :
Le serveur est très sollicité, la charge CPU est de 100%. Mais ce nest pas la raison du blocage du truncate qui attend sur un Lock.
Les process bloquants le truncate sont les process 2838, 2860, 2861, 2862. Il y a un problème sur la requête "select count(*) from t1 a, t1 b". Elle réalise un produit cartésien et va mettre un peu temps avant daboutir !
Le process principal responsable de ce produit cartésien est le 2838. Les process 2860, 2861, 2862 sont en fait des travailleurs appelés à la rescousse pour aider le process principal. Un indice : le suffixe "postgres" est ajouté à la colonne query dans le cas de 2860, 2861, 2862 et pas pour 2838. En cas de doute, vous pouvez utiliser loption -o et inclure la colonne backend_type, disponible depuis la version 10 de PostgreSQL, qui indiquera "background worker" pour les travailleurs supplémentaires, "client backend" pour le process principal. Il serait aussi possible dexclure les background workers du champ de lanalyse avec loption -w.
Le parallélisme ne change pas fondamentalement la manière de traiter un problème de verrouillage. Vous pouvez tuer le process principal mais tuer un des process parallèle arrêtera aussi la requête, sans dailleurs terminer la session :
Le truncate a été libéré et a pu achever son travail, mission accomplie.
Conclusion
Le parallélisme ne complique pas fondamentalement le diagnostic concernant les bloqueurs finaux. Tuer le chef du gang ou même lun des comparses mettra fin aux agissements de toute la bande.