postgres“闲置” 13个小时

时间:2019-09-25 16:51:21

标签: postgresql

我们最近在相当长一段时间内看到了一些查询“处于空闲状态”

 pid  | usename |        state        | duration | application_name | wait_event | wait_event_type
------+---------+---------------------+----------+------------------+------------+----------------
31620 | results | idle in transaction | 12:52:23 | bin/rails        |            |                

这大约有13个小时的空闲时间。

有什么想法会导致他们陷入空闲状态,或者如何进行更深入的挖掘?我们确实注意到一些后台作业的OOM错误。

也有很多“空闲”查询,但是感谢您的评论,这些查询似乎还不错: idle transactions in postgres

postgresql "idle in transaction" with all locks granted中,@ LaurenzAlbe指出了空闲会话超时配置选项作为创可贴,但我宁愿了解此问题,也不愿隐藏它。

谢谢!

PS:我们的应用程序是红宝石,并且使用了活动记录和自定义SQL的组合

编辑:原始标题为“交易中空闲”,查询实际上大部分时间只是闲置而没有交易,对此感到抱歉

编辑2:发现交易过程中闲置了13小时

1 个答案:

答案 0 :(得分:1)

这些会话实际上都是空闲的,因此没有问题。

idleidle in transaction显着不同:后者是一个开放的事务,其中包含锁和块VACUUM,第一个是无害的。

OOM错误必须具有不同的原因。

您应该配置机器,以便

shared_buffers + max_connections * work_mem <= available RAM