PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Surveillance dynamique des instances PostgreSQL à l'aide de pg_top

Surveiller PostgreSQL peut, parfois, être comme essayer de battre du bétail dans un orage. Les applications se connectent et émettent des requêtes si rapidement qu'il est difficile de voir ce qui se passe ou même d'avoir un bon aperçu des performances du système, si ce n'est le développeur typique qui se plaint du type de requêtes "les choses sont lentes, aidez-moi !".

Dans les articles précédents, nous avons expliqué comment accéder à la source lorsque PostgreSQL agit lentement, mais lorsque la source est spécifiquement des requêtes, la surveillance de niveau de base peut ne pas être suffisante pour évaluer ce qui se passe dans un environnement en direct actif.

Entrez pg_top, un programme spécifique à PostgreSQL pour surveiller l'activité en temps réel dans une base de données, ainsi que pour afficher les informations de base pour l'hôte de la base de données lui-même. Tout comme la commande linux "top", son exécution amène l'utilisateur dans un affichage interactif en direct de l'activité de la base de données sur l'hôte, actualisée automatiquement à intervalles réguliers.

Installation

L'installation de pg_top peut être effectuée de la manière généralement attendue :gestionnaires de packages et installation des sources. La version la plus récente de cet article est la 3.7.0.

Gestionnaires de packages

En fonction de la distribution de Linux en question, recherchez pgtop ou pg_top dans le gestionnaire de packages, il est probablement disponible sous certains aspects pour la version installée de PostgreSQL sur le système.

Distros basées sur Red Hat :

# sudo yum install pg_top

Distros basées sur Gentoo :

# sudo apt-get install pgtop

Source

Si vous le souhaitez, pg_top peut être installé via la source du référentiel git PostgreSQL. Cela fournira toutes les versions souhaitées, même les versions les plus récentes qui ne sont pas encore dans les versions officielles.

Caractéristiques

Une fois installé, pg_top fonctionne comme une vue en temps réel très précise de la base de données qu'il surveille et l'utilisation de la ligne de commande pour exécuter « pg_top » lancera l'outil de surveillance interactif PostgreSQL.

L'outil lui-même peut aider à faire la lumière sur tous les processus actuellement connectés à la base de données.

Exécuter pg_top

Le lancement de pg_top est identique à la commande "top" de style unix / linux elle-même, avec les informations de connexion à la base de données.

Pour exécuter pg_top sur un hôte de base de données local :

pg_top -h localhost -p 5432 -d severalnines -U postgres

Pour exécuter pg_top sur un hôte distant, le drapeau -r ou --remote-mode est requis, et l'extension pg_proctab installée sur l'hôte lui-même :

pg_top -r -h 192.168.1.20 -p 5432 -d severalnines -U postgres

Ce qu'il y a à l'écran

Lors du lancement de pg_top, nous voyons un affichage avec pas mal d'informations.

Sortie standard de pg_top sous Linux

Charge moyenne :
Comme la commande supérieure standard, cette charge moyenne pour des intervalles de 1, 5 et 15 minutes.

Temps de disponibilité :
Le temps total pendant lequel le système a été en ligne depuis le dernier redémarrage.

Processus :
Le nombre total de processus de base de données connectés, avec un nombre indiquant combien sont en cours d'exécution et combien sont en sommeil.

Statistiques du processeur :
Les statistiques du processeur, indiquant le pourcentage de charge pour l'utilisateur, le système et l'inactivité, des informations intéressantes ainsi que des pourcentages d'attente.

Mémoire :
La quantité totale de mémoire utilisée, libre, dans les tampons et en cache.

Activité de la base de données :
Les statistiques de l'activité de la base de données, telles que les transactions par seconde, le nombre d'annulations par seconde, les tampons lus par seconde, les tampons touchés par seconde, le nombre de lignes lues par seconde et les lignes écrites par seconde.

Activité d'E/S de la base de données :
L'activité d'Entrée-Sortie sur le système, indiquant le nombre de lectures et d'écritures par seconde, ainsi que la quantité de lectures et d'écritures par seconde.

DB Disk Stats :
La taille totale du disque de la base de données, ainsi que la quantité d'espace libre.

Swap :
Les informations sur l'espace de swap utilisé, le cas échéant.

Processus :
Une liste des processus connectés à la base de données, y compris tout type de processus interne à vide automatique. La liste comprend le pid, la priorité, la bonne quantité, la mémoire résidente utilisée, l'état de la connexion, le nombre de secondes cpu utilisées, le pourcentage cpu et la commande actuelle que le processus exécute.

Fonctionnalités interactives utiles

Il existe une poignée de fonctionnalités interactives dans pg_top auxquelles on peut accéder pendant son exécution. Une liste complète peut être trouvée en saisissant un ?, ce qui fera apparaître un écran d'aide avec toutes les différentes options disponibles.

Informations sur le planificateur

E - Plan d'exécution
En saisissant E, vous serez invité à indiquer un ID de processus pour lequel afficher un plan d'exécution. Cela équivaut à exécuter « EXPLAIN  ; » manuellement dans la base de données.

A - EXPLAIN ANALYZE (UPDATE/DELETE safe)
La saisie de A fournira une invite pour un ID de processus pour lequel afficher un plan EXPLAIN ANALYZE. Cela équivaut à exécuter « EXPLAIN ANALYZE  ; » manuellement dans la base de données.

Téléchargez le livre blanc aujourd'hui PostgreSQL Management &Automation with ClusterControlDécouvrez ce que vous devez savoir pour déployer, surveiller, gérer et faire évoluer PostgreSQLTélécharger le livre blanc

Informations sur le processus

Q - Afficher la requête actuelle d'un processus
Saisir Q fournira une invite pour un ID de processus pour lequel afficher la requête complète.

I - Affiche les statistiques d'E/S par processus (Linux uniquement)
Saisir I bascule la liste des processus vers un affichage d'E/S, montrant chaque processus lu, écrit, etc. sur le disque.

L - Affiche les verrous détenus par un processus
La saisie de L fournira une invite pour un ID de processus pour lequel afficher les verrous détenus. Cela inclura la base de données, la table, le type de verrou et si le verrou a été accordé ou non. Utile lors de l'exploration de processus longs ou en attente.

Informations sur la relation

R - Afficher les statistiques de la table utilisateur.
La saisie de R affiche les statistiques de la table, y compris les analyses séquentielles, les analyses d'index, les INSERTS, les UPDATE et les DELETE, toutes pertinentes pour l'activité récente.

X - Afficher les statistiques d'index utilisateur
La saisie de X affiche les statistiques d'index, y compris les analyses d'index, les lectures d'index et les extractions d'index, toutes pertinentes pour l'activité récente.

Trier

Le tri de l'affichage peut être effectué à l'aide de l'un des caractères suivants.
M - Trier par utilisation de la mémoire
N - Trier par pid
P - Trier par utilisation du processeur
T - Trier par temps

Les entrées suivantes sont spécifiées après avoir appuyé sur o, permettant également le tri des pages d'index, de table et de statistiques d'e/s.
o - Spécifiez l'ordre de tri (cpu, taille, résolution, heure, commande)
statistiques d'index (idx_scan, idx_tup_fetch, idx_tup_read)
         statistiques de table (seq_scan, seq_tup_read, idx_scan, idx_tup_fetch, n_tup_ins, n_tup_upd, n_tup_del)
   sysr,       statistiques d'e/s (pid, rchar, wchar, , écrit, cécrit, commande)

Connexion / Manipulation des requêtes

k - tuer les processus spécifiés
La saisie de k fournira une invite pour un processus ou une liste de processus de base de données à tuer.

r - renice un processus (base de données locale uniquement, racine uniquement)
La saisie de r fournira une invite pour une valeur agréable, suivie d'une liste de processus à définir sur cette nouvelle valeur agréable. Cela modifie la priorité des processus importants du système.

Exemple :"renice 1 7004"

Différentes utilisations de pg_top

Utilisation réactive de pg_top

L'utilisation générale de pg_top est le mode interactif, nous permettant de voir quelles requêtes sont en cours d'exécution sur un système qui rencontre des problèmes de lenteur, d'exécuter des plans d'explication sur ces requêtes, de renier les requêtes importantes pour qu'elles se terminent plus rapidement ou de tuer toutes les requêtes provoquant des ralentissements majeurs . Généralement, cela permet à l'administrateur de la base de données de faire la plupart des mêmes choses qui peuvent être faites manuellement sur le système, mais de manière plus rapide et tout en une seule option.

Utilisation proactive de pg_top

Bien que ce ne soit pas trop courant, pg_top peut être exécuté en "mode batch", qui affichera les principales informations discutées en sortie standard, puis quittera. Cela peut être scripté pour s'exécuter à certains intervalles, puis envoyé à n'importe quel processus personnalisé souhaité, analysé et des alertes générées en fonction de ce sur quoi l'administrateur peut vouloir être alerté. Par exemple, si la charge du système devient trop élevée, s'il y a une valeur de transactions par seconde plus élevée que prévu, tout ce qu'un programme créatif peut comprendre.

Généralement, il existe d'autres outils pour collecter et rapporter ces informations, mais avoir plus d'options est toujours une bonne chose, et avec plus d'outils disponibles, les meilleures options peuvent être trouvées.

Utilisation historique de pg_top

Tout comme l'utilisation précédente, l'utilisation proactive, nous pouvons scripter pg_top en mode batch pour enregistrer des instantanés de l'apparence de la base de données au fil du temps. Cela peut être aussi simple que de l'écrire dans un fichier texte avec un horodatage, ou de l'analyser et de stocker la date dans une base de données relationnelle pour générer des rapports. Cela permettrait de trouver plus d'informations après un incident majeur, tel qu'un crash de la base de données à 4 heures du matin. Plus il y a de données disponibles, plus les problèmes sont susceptibles d'être détectés.

Plus d'informations

La documentation du projet est assez limitée et la plupart des informations sont disponibles dans la page de manuel linux, trouvée en exécutant « man pg_top ». La communauté PostgreSQL peut aider avec des questions ou des problèmes via les listes de diffusion PostgreSQL, ou la salle de discussion IRC officielle trouvée sur freenode, nom de canal #postgresql.