为什么我的查询处于空闲状态?

use*_*691 4 postgresql amazon-rds postgresql-11 postgresql-performance

我是 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)
Run Code Online (Sandbox Code Playgroud)

小智 8

您的会话处于空闲状态,而不是查询。

会话idle不是问题。它只是意味着后端正在等待客户端发送 SQL 查询。

不过,会议的数量有点偏多。一旦他们都开始做某事,你将需要一个非常强大的服务器来应对这个问题。

如果会话idle in transaction处于该状态太长时间,就会出现问题。这就是idle_in_transaction_session_timeout处理的内容,而不是“空闲”会话。