如果我查询:
select * from pg_stat_activity where application_name ~ 'example-application';
我得到了很多行,哪个州是idle
查询是COMMIT
。它们是持久的并且不会消失。一段时间后,我的申请达到hibernate.c3p0.max_size
(池中 JDBC 连接的最大数量)限制并停止使用数据库。
其他 SO 线程中描述了一些应用程序实现细节:线程池中的 Guice DAO 提供程序 - 查询变为“事务中空闲” https://stackoverflow.com/questions/43919411/guice-dao-provider-in-thread-pool-queries-become-idle-in-transation
为什么会发生这种情况?如何解决这个问题呢?
如果会话“空闲”,则查询列显示last连接已执行的语句。这是not“当前”查询,因此连接是not等待提交完成。
The query
列仅显示current声明如果status
shows active
.
“空闲”连接是没问题本质上是使用连接池的原因,以便可以重用它。但是,会话在“事务中空闲”状态下停留很长时间are一个问题。但您表示您的连接处于“空闲”状态。
如果您的连接池达到限制,这很可能意味着您的应用程序未将连接正确返回到池中。这是您需要在应用程序中修复的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)