Postgresql 博士后;“交易中闲置”;13个小时

Postgresql 博士后;“交易中闲置”;13个小时,postgresql,Postgresql,我们最近看到一些查询在相当长的一段时间内“在事务中空闲” pid | usename | state | duration | application_name | wait_event | wait_event_type ------+---------+---------------------+----------+------------------+------------+---------------- 31620 | results | idle

我们最近看到一些查询在相当长的一段时间内“在事务中空闲”

 pid  | usename |        state        | duration | application_name | wait_event | wait_event_type
------+---------+---------------------+----------+------------------+------------+----------------
31620 | results | idle in transaction | 12:52:23 | bin/rails        |            |                
这在交易中几乎是13个小时的空闲时间

你知道是什么原因让他们陷入闲置状态,或者如何深入挖掘吗?我们确实注意到一些后台作业的OOM错误

也有很多“空闲”查询,但感谢您的评论,这些似乎很好:

指出空闲会话超时配置选项是创可贴,但我宁可理解这个问题也不愿隐藏它。

谢谢

PS:我们的应用程序是RubyonRails,我们混合使用活动记录和定制SQL

编辑:原来的标题是“在事务中空闲”,查询实际上大部分时间都是空闲的,而不是在事务中,对此表示抱歉


编辑#2:在事务处理过程中发现13小时空闲

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

idle
与事务中的
idle
有很大不同:后者是一个打开的事务,持有锁并阻止
VACUUM
,前者是无害的

OOM错误必须有不同的原因

您应该配置机器,以便

shared_buffers + max_connections * work_mem <= available RAM

shared\u buffers+max\u connections*work\u mem这些在事务中都是空闲的,只是空闲,这本身不是问题。您是否确实看到任何状态为“事务中空闲”的进程?“空闲”表示没有活动查询,仅此而已。除非您的应用程序100%的时间都在使用每一个连接,否则您将看到这一点。如果您确实看到100%的利用率,这通常表明您需要一个更好的服务器,因为查询可能已积压。很抱歉造成混淆。似乎我们有很多“空闲”的查询,这些查询都很好。但我们确实有一个13小时的“空闲事务”查询,我们最终只是终止了它。这可能是OOM引起的?必须关联事件的时间。事务中空闲的会话可能分配了一些内存,但不会增长。此外,它不应该导致其他会话使用更多RAM。