我们最近看到一些查询“在事务中空闲”很长一段时间
pid | usename | state | duration | application_name | wait_event | wait_event_type
------+---------+---------------------+----------+------------------+------------+----------------
31620 | results | idle in transaction | 12:52:23 | bin/rails | |
Run Code Online (Sandbox Code Playgroud)
这相当于交易闲置了近 13 个小时。
知道是什么导致他们陷入闲置状态,或者如何深入挖掘?我们确实注意到后台作业出现一些 OOM 错误。
在postgresql“事务中空闲”中,所有锁都被授予@LaurenzAlbe指出空闲会话超时配置选项是一个创可贴,但我宁愿理解这个问题而不是隐藏它。
谢谢!
PS:我们的应用程序是 ruby on Rails,我们混合使用活动记录和自定义 SQL
编辑:原始标题是“事务中空闲”,查询实际上大部分时间都是空闲的,而不是在事务中,对此感到抱歉
编辑 #2:发现交易过程中有 13 小时空闲
这些会话实际上都是空闲的,所以没有问题。
idle与 显着不同idle in transaction:后者是持有锁和块的开放事务VACUUM,第一个是无害的。
OOM 错误必定有不同的原因。
您应该配置机器,以便
shared_buffers + max_connections * work_mem <= available RAM
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7798 次 |
| 最近记录: |