【问题标题】:HikariCP debug output, is this normal?HikariCP调试输出,这正常吗?
【发布时间】:2015-09-13 22:19:25
【问题描述】:

我刚刚开始在带有休眠功能的 Swing 应用程序中使用 HikariCP。我正在维护一个旧项目,所以那里发生了很多疯狂的事情。连接泄漏检测功能帮助我了解会话只会在某些事件上关闭,例如当用户单击“保存”按钮时。在其他情况下,存在泄漏。我认为以前的开发人员正在尝试实现“长对话”工作单元,但他们错过了一些(大多数)案例。

所以我现在的目标是找到所有漏洞并修复它们。我打算使用 HikariCP 调试输出来帮助我做到这一点。我不知道 HikariCP 文档上是否有解释调试输出的 wiki 页面,但我想知道当应用程序空闲时这个输出是否正常,或者那里有一些奇怪的东西我应该调查更多:

2015-09-14 01:12:51 DEBUG HikariPool - After fill pool stats HikariPool-0 (total=10, inUse=3, avail=7, waiting=0)
2015-09-14 01:13:21 DEBUG HikariPool - Before cleanup pool stats HikariPool-0 (total=10, inUse=3, avail=7, waiting=0)
2015-09-14 01:13:21 DEBUG HikariPool - After cleanup pool stats HikariPool-0 (total=6, inUse=3, avail=3, waiting=0)
2015-09-14 01:13:21 DEBUG PoolUtilities - Closing connection com.mysql.jdbc.JDBC4Connection@4fb38272
2015-09-14 01:13:21 DEBUG PoolUtilities - Closing connection com.mysql.jdbc.JDBC4Connection@417465f4
2015-09-14 01:13:21 DEBUG PoolUtilities - Closing connection com.mysql.jdbc.JDBC4Connection@454be902
2015-09-14 01:13:21 DEBUG PoolUtilities - Closing connection com.mysql.jdbc.JDBC4Connection@496fcf

如果这是正常行为,我还想知道这 4 个连接的用途,以及它们为什么会在此时关闭。谢谢。

【问题讨论】:

    标签: swing hibernate hikaricp


    【解决方案1】:

    这都是正常的输出。这些连接可能由于在“idleTimeout”期间处于空闲状态,或者因为它们达到了它们的生命周期(“maxLifetime”)而关闭。我确实建议更新到最新版本 (2.4.x),这通常会在调试日志消息中提供关闭连接的原因。

    【讨论】:

    • 感谢您的回复。我无法理解的是为什么总连接数是 10,然后突然变成 6,然后 4 个“丢失”的连接似乎正在关闭。我想这就是它的工作方式。此输出来自 2.4.1 版本。
    • 它似乎不是 v2.4.1。 PoolUtilties 类不再存在。该消息应该类似于“PoolElf - 关闭连接 com.mysql.jdbc.JDBC4Connection@4fb38272: (connection passed idleTimeout)”。其中“(连接已通过 idleTimeout)”可能是多个消息之一,包括“(连接被驱逐或死亡)”或“(连接已达到 maxLifetime)”。
    • 我使用的休眠版本(最终版本 4.3.11 - 2015 年 8 月发布)似乎依赖于旧版本的 HikariCP(2.3.3)。我会先尝试升级hibernate。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多