小编典典

pg_stat_activity中具有“ idle”状态的持久“ COMMIT”查询

hibernate

如果我查询:

select * from pg_stat_activity where application_name ~ 'example-application';

我得到许多行,状态为idle,查询为COMMIT。它们是持久的,不会消失。一段时间后,我的应用程序达到hibernate.c3p0.max_size(池中最大JDBC连接数)限制,并停止使用数据库。

其他SO线程中描述了一些应用程序实现的详细信息: 线程池中的Guice DAO Provider-
查询变为“空闲时转换”

为什么会发生?如何解决这个问题呢?


阅读 949

收藏
2020-06-20

共1个答案

小编典典

如果会话为“空闲”,则查询列将显示连接已执行的 最后一条 语句。它 不是 “当前”查询,因此连接 等待提交完成。

如果显示,则该query列仅显示 当前 语句。status``active

“空闲”连接 不是问题 ,实质上是使用连接池的原因,以便可以重新使用它。但是,在“空闲状态” 停留很长时间的会话
一个问题。但是您说您的连接处于“空闲”状态。

如果您的连接池达到限制,则很可能意味着您的应用程序没有将连接正确返回到该池。您需要在应用程序中对其进行修复。

2020-06-20