postgresql - postgres "idle in transaction"13 小时

标签 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 指出空闲 session 超时配置选项是一种创可贴,但我宁愿理解这个问题也不愿隐藏它。

谢谢!

PS:我们的应用程序是 ruby​​ on rails,我们混合使用事件记录和自定义 SQL

编辑:原来的标题是“idle in transaction”,查询实际上大部分时间只是空闲而不是在事务中,对此感到抱歉

编辑 #2:发现交易过程中有 13 小时空闲

最佳答案

这些 session 其实都是空闲的,所以没有问题。

idleidle in transaction 有显着区别:后者是一个开放的事务,持有锁并阻塞VACUUM,第一个是无害的.

OOM 错误一定有不同的原因。

你应该这样配置机器

shared_buffers + max_connections * work_mem <= available RAM

关于postgresql - postgres "idle in transaction"13 小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58103168/

相关文章:

postgresql - psycopg2.ProgrammingError:关系*在通过MRjob弹出数据库时已经存在

postgresql - 如何处理异常: "No suitable driver" while running spark-submit

python - 如何使用 Django 创建子类?

mysql - 在 ORDER BY 中使用聚合函数与已经聚合的列之间是否存在性能差异?

sql - 奇怪的 : Planner takes decision with lower cost, 但(非常)查询运行时间长

python - 将 JSON 字符串插入到 PostgreSQL 表列中

postgresql - 特性 `diesel::Expression` 没有为 `bigdecimal::BigDecimal` 实现

postgresql - 如何在 PostgreSQL 中格式化货币

mysql - 将 monad 组合翻译成 SQL

sql - 永远更新查询