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?
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.
| NAME | VIRT | RES | CPU% | MEM% | VMLIMIT |
| postgres: master postgres 27.0.3.145(52003) SELECT [14431] | 457,66 MB | 27,7 MB | 95,15 | 2,78 | illimitato |
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
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)
- Argomenti
- Database
- Lingua
- Italiano
Video correlati

