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

4 minuti di lettura
0

Devo visualizzare quali query sono attivamente in esecuzione su un'istanza database Amazon Relational Database Service (Amazon RDS) o Amazon Aurora PostgreSQL. Come posso farlo?

Risoluzione

Controllo delle query in esecuzione

All'account utente deve essere concesso il ruolo rds_superuser per visualizzare tutti i processi in esecuzione su un'istanza database RDS per PostgreSQL o Aurora PostgreSQL. Altrimenti, pg_stat_activity mostra solo le query in esecuzione per i relativi processi. Per ulteriori informazioni, consulta Raccolte di statistica nella documentazione di PostgreSQL.

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

2.    Esegui il seguente comando:

SELECT * FROM pg_stat_activity ORDER BY pid;

Inoltre, puoi modificare questo comando per visualizzare l'elenco delle query in esecuzione 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 è nullo, non è stata aperta alcuna transazione in quella sessione:

SELECT * FROM pg_stat_activity ORDER BY xact_start;

Oppure, visualizza lo stesso elenco di query in esecuzione ordinate in base alla data di esecuzione dell'ultima query:

SELECT * FROM pg_stat_activity ORDER BY query_start;

Per una visualizzazione aggregata degli eventi di attesa, se presenti, esegui il seguente 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

Utilizzando pg_stat_activity e abilitando il Monitoraggio avanzato, puoi identificare la query o il processo che consuma grandi quantità di risorse di sistema. Dopo aver abilitato il Monitoraggio avanzato, assicurati che la granularità impostata sia sufficiente per visualizzare le informazioni necessarie per diagnosticare il problema. Successivamente puoi controllare pg_stat_activity per visualizzare le attività correnti nel tuo database e i parametri di Monitoraggio avanzato di quel momento.

1.    Identifica la query che consuma risorse visualizzando i parametri dell'elenco dei processi del sistema operativo. Nell'esempio seguente, il processo consuma circa il 95% del tempo della CPU nell'istanza database RDS. L'ID processo (pid) è 14431e il processo sta eseguendo un'istruzione SELECT. Puoi anche visualizzare l'utilizzo della memoria di sistema controllando il MEM%.

NAMEVIRTRESCPU%MEM%VMLIMIT
postgres: postgres master 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.    Identifica l'attività corrente della sessione eseguendo il seguente comando:

SELECT * FROM pg_stat_activity WHERE pid = PID;

**Nota: **sostituisci PIDcon il pid 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 interrompere il processo che esegue la query, richiama la seguente query da un'altra sessione. Assicurati di sostituire PIDcon il pid del processo identificato nel passaggio 3.

SELECT pg_terminate_backend(PID);

Importante: prima di terminare le transazioni, valuta il potenziale impatto di ogni transazione sullo stato del tuo database e della tua applicazione.


Informazioni correlate

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

Creazione di ruoli

Monitoraggio avanzato

Documentazione di PostgreSQL per psql

Documentazione di PostgreSQL per pg_stat_activity