【问题标题】:warning messages with hikaricp带有 hikaricp 的警告信息
【发布时间】:2014-09-15 18:05:22
【问题描述】:

我使用 hikaricp 作为我的数据库连接池。当我完成我的 SQL 语句时,我通过在连接上调用 close 来关闭连接,我相信你应该将连接代理返回到池中。然而,我看到以下警告(不是错误)消息,我不得不怀疑它是否是一个需要解决的问题,因为我没有正确清理我的连接资源。我没有使用资源尝试,而是使用了 try catch finally(我在 finally 中关闭了连接,并且我意识到在某些情况下, finally 实际上可能不会被调用,但在我的情况下它会被调用)。有什么想法吗?

2014-09-15 13:59:26,083 WARN c.z.h.p.LeakTask [Hikari Housekeeping Timer (pool wmHikariCp)] Connection leak detection triggered, stack trace follows java.lang.Exception
    at com.abc.test.DBConnPool.getConnection(DBConnPool.java:71)
    at com.abc.test.TestProj.callDB(TestApp.java:30)
    at com.abc.test.TestProj.main(TestApp.java:81)

【问题讨论】:

    标签: java database-connection connection-pooling hikaricp


    【解决方案1】:

    您能否确认您是否确实将连接释放回池?您可以使用资源尝试(除了 Brett 提到的增加阈值之外):

    try (Connection conn = DBConnectionPool.getConnection(); 
            PreparedStatement ps = conn.prepareStatement(preparedQuery);) {
    

    和结果集(因为某些驱动程序/数据库在清除连接时可能不会清除结果集,尽管不确定这是否对新的驱动程序/数据库仍然有效,但我不确定您使用的是什么):

        try (ResultSet rs = ps.executeQuery();) {
    

    希望对你有帮助。

    【讨论】:

    • 多亏了这两个 - 我后来注意到我身边的一个异常问题可能导致了问题(仍未确认),但我在使用 try with 时不再看到泄漏语句资源
    【解决方案2】:

    您可能只是使用连接的时间超过了泄漏检测超时时间。泄漏检测是连接离开池多长时间的阈值。尝试将阈值提高到更长的超时时间。

    【讨论】:

    • 谢谢分享。可以肯定的是,我正在尝试使用资源进行测试,只是为了确定。在不同的休息跑中,我也会提高阈值。
    猜你喜欢
    • 1970-01-01
    • 2014-08-20
    • 2018-09-27
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多