利用pg_stat_activity進行問題排查


pg_stat_activity是一個非常有用的視圖,可以幫助排查pg的一些問題(如連接數目過多問題)。pg_stat_activity每行展示的是一個“process”的相關信息,這里的“process”可以理解為一個DB連接。

The pg_stat_activity view will have one row per server process, showing information related to the current activity of that process.

其他參考手冊:

 http://www.postgresql.org/docs/9.4/static/monitoring-stats.html

比較有用的3個字段,翻譯如下:
query_start:active狀態的查詢開始時間,如果狀態不是active的,那么就是最后一次查詢開始的時間
state:運行狀態,可以為幾種值。active:正在執行查詢;idle:等待新的命令;idle in transaction:后端是一個事務,但是尚未執行查詢;idle in transaction(aborted):和idle in transaction類似,除了事務執行出錯。
query:執行的查詢文本(即SQL)。如果狀態是active,那么就是正在執行的SQL;如果是其他狀態,則展示最后一次執行的SQL。
所以可以用:
select count(*) from pg_stat_activity where state='idle';
查詢閑置連接數。如果數字過大,可以認為是有問題的(如連接忘記關閉)。
如果想進一步定位到有問題的SQL,可以如下查詢:
select query,count(*) as num from pg_stat_activity where state='idle' group by query order by num desc;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM