Salta al contenuto

Come posso controllare le query in esecuzione e diagnosticare i problemi di consumo di risorse della mia istanza database Amazon RDS per PostgreSQL o Aurora PostgreSQL?

4 minuti di lettura
0

Desidero vedere le query che vengono eseguite attivamente in un'istanza database Amazon Relational Database Service (Amazon RDS) per PostgreSQL. Oppure in un'istanza database Amazon Aurora compatibile con PostgreSQL.

Risoluzione

Controlla le query in esecuzione

L'account utente deve avere il ruolo rds_superuser per visualizzare tutti i processi in esecuzione in un'istanza database Amazon RDS per PostgreSQL o Aurora compatibile con PostgreSQL. Altrimenti, pg_stat_activity mostra solo le query in esecuzione per i relativi processi. Per ulteriori informazioni, consulta Statistics Collector nella documentazione di PostgreSQL.

1.    Connettiti all'istanza database che esegue Amazon RDS per PostgreSQL o Aurora PostgreSQL.

2.    Esegui questo comando:

SELECT * FROM pg_stat_activity ORDER BY pid;

Puoi inoltre modificare il comando per visualizzare l'elenco delle query in esecuzione. Le query vengono ordinate in base al momento in cui sono state stabilite le connessioni:

SELECT * FROM pg_stat_activity ORDER BY backend_start;

Se il valore della colonna xact_start è nullo, non è presente alcuna transazione aperta nella sessione:

SELECT * FROM pg_stat_activity ORDER BY xact_start;

Oppure visualizza lo stesso elenco di query in esecuzione ordinate per data di esecuzione della query a partire dall'ultima:

SELECT * FROM pg_stat_activity ORDER BY query_start;

Per una vista aggregata degli eventi di attesa, se presenti, esegui questo comando:

select state, wait_event, wait_event_type, count(*) from pg_stat_activity group by 1,2,3 order by wait_event;

Diagnosi del consumo di risorse

Puoi utilizzare pg_stat_activity e Monitoraggio avanzato per identificare la query o il processo che consuma grandi quantità di risorse di sistema. Dopo aver attivato Monitoraggio avanzato, imposta la granularità su un livello sufficiente per visualizzare le informazioni necessarie alla diagnosi del problema. Quindi esamina pg_stat_activity per vedere le attività correnti nel database. Puoi anche analizzare le metriche di Monitoraggio avanzato in quel momento.

1.    Visualizza la metrica dell'elenco dei processi del sistema operativo per identificare la query che consuma risorse. Nell'esempio seguente, il processo consuma circa il 95% del tempo della CPU nell'istanza database RDS. L'ID del processo (pid) è 14431. Il processo esegue un'istruzione SELECT. Puoi anche controllare il valore MEM% per vedere l'utilizzo della memoria di sistema.

NAMEVIRTRESCPU%MEM%VMLIMIT
postgres: master postgres 27.0.3.145(52003) SELECT [14431]457,66 MB27,7 MB95,152,78illimitato

2.    Connettiti all'istanza database che esegue PostgreSQL o Aurora PostgreSQL.

3.    Esegui questo comando per identificare l'attività corrente della sessione:

SELECT * FROM pg_stat_activity WHERE pid = PID;

Nota: sostituisci PID con il pid che hai identificato nel passaggio 1.

4.    Controlla il risultato del comando:

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

Per arrestare il processo che esegue la query, invoca la seguente query da un'altra sessione. Sostituisci PID con il pid del processo identificato nel passaggio 3.

SELECT pg_terminate_backend(PID);

Importante: prima di terminare le transazioni, valuta il potenziale effetto che ogni transazione ha sullo stato del database e dell'applicazione.

Informazioni correlate

Come posso risolvere i problemi di utilizzo elevato della CPU per Amazon RDS o Amazon Aurora PostgreSQL?

Informazioni su ruoli e autorizzazioni di PostgreSQL

Attività DBA comuni per Amazon RDS for PostgreSQL

psql (sul sito web PostgreSQL)

pg_stat_activity (sul sito web PostgreSQL)