使用 AWS re:Post 即表示您同意 AWS re:Post 使用條款

如何檢查 Amazon RDS 或 Aurora PostgreSQL 資料庫執行個體的執行查詢和診斷資源使用情形?

2 分的閱讀內容
0

我需要查看哪些查詢正在 Amazon Relational Database Service (Amazon RDS) 或 Amazon Aurora PostgreSQL 資料庫執行個體上主動執行。我該如何操作?

解決方案

檢查執行查詢

您的使用者帳戶必須被授與 rds_superuser 角色,才能查看在 RDS for PostgreSQL 或 Aurora PostgreSQL 的資料庫執行個體上執行的所有程序。否則,pg_stat_activity 只會顯示執行其自有程序的查詢。如需詳細資訊,請參閱針對統計資料收集器的 PostgreSQL 文件。

1.    連接到正在執行 PostgreSQL 或 Aurora PostgreSQL 的資料庫執行個體

2.    執行下列命令:

SELECT * FROM pg_stat_activity ORDER BY pid;

您也可以修改此命令,以檢視建立連線時訂購的執行查詢清單:

SELECT * FROM pg_stat_activity ORDER BY backend_start;

如果資料欄值為 null,則該工作階段沒有開啟任何交易:

SELECT * FROM pg_stat_activity ORDER BY xact_start;

或者,檢視上次執行查詢時所訂購的相同執行查詢清單:

SELECT * FROM pg_stat_activity ORDER BY query_start;

如需等待事件的彙總檢視 (如果有的話),請執行下列命令:

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

診斷資源使用情況

藉由使用 pg_stat_activity啟用增強型監控,您可以識別耗用大量系統資源的查詢 / 程序。啟用增強型監控之後,請確定設定的精細程度足以查看診斷問題所需的資訊。然後,您可以檢查 pg_stat_activity 以查看資料庫中目前的活動和當時的增強型監控指標。

1.    檢視作業系統程序清單指標,以識別耗用資源的查詢。在下列範例中,此程序耗用 RDS 資料庫執行個體上大約 95% 的 CPU 時間。該程序的處理 ID (PID) 是 14431,且該程序正在執行一個 SELECT 陳述式。您還可以透過檢查 MEM% 以查看系統記憶體的使用情況。

NAMEVIRTRESCPU%MEM%VMLIMIT
postgres: master postgres 27.0.3.145(52003) SELECT [14431]457.66 MB27.7 MB95.152.78無限制

2.    連接到正在執行 PostgreSQL 或 Aurora PostgreSQL 的資料庫執行個體

3.    執行下列命令,以識別工作階段的目前活動:

SELECT * FROM pg_stat_activity WHERE pid = PID;

** 注意:** 用您在步驟 1 中識別的 PID 取代 PID

4.    檢查命令的結果:

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

若要停止執行查詢的程序,請從另一個工作階段調用下列查詢。請務必將 PID 替換為您在步驟 3 中識別的處理 PID。

SELECT pg_terminate_backend(PID);

**重要事項:**在終止交易之前,請評估每個交易對資料庫和應用程式狀態的潛在影響。


相關資訊

如何針對 Amazon RDS 或 Amazon Aurora PostgreSQL 高 CPU 使用率進行疑難排解?

建立角色

增強型監控

適用於 psql 的 PostgreSQL 文件

適用於 pg_stat_activity 的 PostgreSQL 文件