Je souhaite voir les requêtes en cours d'exécution sur une instance de base de données Amazon Relational Database Service (Amazon RDS) pour PostgreSQL. Ou, pour une instance de base de données Amazon Aurora édition compatible avec PostgreSQL.
Résolution
Vérifier les requêtes en cours
Votre compte utilisateur doit avoir le rôle rds_superuser pour voir tous les processus qui s'exécutent sur une instance de base de données Amazon RDS pour PostgreSQL ou Aurora compatible avec PostgreSQL. Sinon, pg_stat_activity affiche les requêtes qui s’exécutent pour ses propres processus. Pour plus d’informations, consultez la documentation de PostgreSQL relative au Statistics Collector.
1. Connectez-vous à l’instance de base de données qui exécute Amazon RDS for PostgreSQL ou Aurora PostgreSQL.
2. Exécutez la commande suivante :
SELECT * FROM pg_stat_activity ORDER BY pid;
Vous pouvez également modifier cette commande pour afficher la liste des requêtes en cours. Les requêtes sont classées en fonction de la date à laquelle les connexions ont été établies :
SELECT * FROM pg_stat_activity ORDER BY backend_start;
Si la valeur de la colonne xact_start est nulle, aucune transaction n’est ouverte dans cette session :
SELECT * FROM pg_stat_activity ORDER BY xact_start;
Vous pouvez également afficher la même liste de requêtes en cours, classées par date de début de la dernière requête :
SELECT * FROM pg_stat_activity ORDER BY query_start;
Pour afficher une vue agrégée des événements d'attente, le cas échéant, exécutez la commande suivante :
select state, wait_event, wait_event_type, count(*) from pg_stat_activity group by 1,2,3 order by wait_event;
Diagnostiquer la consommation de ressources
Vous pouvez utiliser pg_stat_activity et Surveillance améliorée pour identifier la requête ou le processus qui consomme de grandes quantités de ressources système. Après avoir activé la surveillance améliorée, définissez la granularité à un niveau suffisant pour afficher les informations dont vous avez besoin pour diagnostiquer le problème. Ensuite, consultez pg_stat_activity pour voir les activités en cours dans votre base de données. Vous pouvez également consulter les indicateurs de surveillance améliorée à ce moment-là.
1. Consultez la métrique de la liste des processus du système d’exploitation pour identifier la requête qui consomme des ressources. Dans l’exemple suivant, le processus consomme environ 95 % du temps processeur sur l’instance de base de données RDS. L'identifiant du processus (pid) est 14431. Le processus exécute une instruction SELECT. Vous pouvez également vérifier le MEM% pour voir l'utilisation de la mémoire système.
| | | | | |
|---|
| NOM | VIRT | RES | %CPU | %MEM | VMLIMIT |
| postgres : master postgres 27.0.3.145 (52003) SELECT \ [14431 ] | 457,66 Mo | 27,7 Mo | 95,15 | 2,78 | illimité |
2. Connectez-vous à l'instance de base de données qui exécute PostgreSQL ou Aurora PostgreSQL.
3. Exécutez la commande suivante pour identifier l'activité actuelle de la session :
SELECT * FROM pg_stat_activity WHERE pid = PID;
Remarque : remplacez le PID par le PID que vous avez identifié à l'étape 1.
4. Vérifiez le résultat de la commande :
datid | 14008
datname | postgres
pid | 14431
usesysid | 16394
usename | master
application_name | psql
client_addr | 27.0.3.145
client_hostname |
client_port | 52003
backend_start | 2020-03-11 23:08:55.786031+00
xact_start | 2020-03-11 23:12:16.960942+00
query_start | 2020-03-11 23:12:16.960942+00
state_change | 2020-03-11 23:12:16.960945+00
wait_event_type |
wait_event |
state | active
backend_xid |
backend_xmin | 812
query | SELECT COUNT(*) FROM columns c1, columns c2, columns c3, columns c4, columns c5;
backend_type | client backend
Pour arrêter le processus qui exécute la requête, appelez la requête suivante depuis une autre session. Remplacez le PID par le pid du processus que vous avez identifié à l'étape 3.
SELECT pg_terminate_backend(PID);
Important : avant de terminer les transactions, évaluez l’impact potentiel de chaque transaction sur l'état de votre base de données et de votre application.
Informations connexes
Comment résoudre un problème d'utilisation élevée du processeur pour Amazon RDS ou Aurora PostgreSQL ?
Comprendre les rôles et les autorisations de PostgreSQL
Création de rôles
psql (sur le site web de PostgreSQL)
pg_stat_activity (sur le site web de PostgreSQL)