Postgresql

為什麼我的查詢處於空閒狀態?

  • July 21, 2020

我是 postgres 新手,我有 aws rds 實例執行 postgresql 引擎版本 11.5。

我所有的查詢都是clientRead 有wait_event。為什麼我的所有查詢都處於空閒狀態。這是否意味著它們在事務中處於空閒狀態?

我應該採取哪些步驟來解決這個問題?

例如,如果我將 idle_in_transaction_session_timeout 更改為 10 分鐘,它會解決這個問題嗎?

select count(*),state FROM pg_stat_activity group by 2;
count | state
-------+--------
    5 |
    1 | active
  451 | idle


Select pid, datname, usename, wait_event_type, wait_event, backend_type FROM pg_stat_activity where state='idle';
 pid  | datname  |         usename          | wait_event_type | wait_event |  backend_type
-------+----------+--------------------------+-----------------+------------+----------------
14797 | xxxxx    | user                     | Client          | ClientRead | client backend


SELECT current_setting('idle_in_transaction_session_timeout');
current_setting
-----------------
1d
(1 row)

您的會話處於空閒狀態,而不是查詢。

idle沒有問題的會話。它只是意味著後端正在等待客戶端發送 SQL 查詢。

不過,會話的數量有點偏高。一旦所有人都開始做某事,您將需要有一個非常強大的伺服器來應對這種情況。

如果會話idle in transaction保持在該狀態太久,就會出現問題。這就是idle_in_transaction_session_timeout處理的內容,而不是“空閒”會話。

引用自:https://dba.stackexchange.com/questions/271346