HikariCP连接泄漏检测和休眠

时间:2016-03-02 15:52:18

标签: hibernate hikaricp

是否可以在版本2.3.9中启用泄漏检测?正如我之前在此question中所说的,Hibernate正在使用HikariCP的2.3.3版本。截至2016年2月,他们已经升级了HikariCP版本,但遗憾的是版本为2.3.9

我需要启用泄漏检测才能修复它们。 我在hibernate配置文件中添加了以下行:

<property name="hibernate.hikari.maximumPoolSize">30</property>
<property name="hibernate.hikari.idleTimeout">30000</property>
<property name="hibernate.hikari.dataSource.leakDetectionThreshold">30000</property>   

前两行可以在调试日志中看到,但是当我添加第三行时,我无法运行应用程序。 我也尝试使用代码添加它,但它仍然无法正常工作。我收到以下错误:

HHH000130: Instantiating explicit connection provider: org.hibernate.hikaricp.internal.HikariCPConnectionProvider
Initial SessionFactory creation failed.org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]Initial SessionFactory creation failed.Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

2 个答案:

答案 0 :(得分:3)

leakDetectionThreshold不是数据源的属性,它是hikaricp特有的。 尝试删除word&#39; dataSource&#39;为:

a

答案 1 :(得分:0)

对我来说,leakDetectionThreshold属性无法正常工作。尝试增加其余的“超时”属性,然后查看对您有用的内容。

private DataSource tenantDataSource() {
    HikariConfig config = new HikariConfig();
    config.setValidationTimeout(60000);
    config.setConnectionTimeout(60000);
    config.setIdleTimeout(60000);
    config.setInitializationFailTimeout(60000);
    config.setLeakDetectionThreshold(60000);
    ...
    the rest of the Hikari configuration
    ...
    return HikariDataSource(config);
}

当然,您也可以在.yml文件中更改这些值:

spring:
    datasource:
        hikari:
            validation-timeout: 60000
            leak-detection-threshold: 60000
            connection-timeout: 60000
            idle-timeout: 60000
            initialization-fail-timeout: 60000

仍然尝试调查为什么会发生这种情况,因为经常会出现这些异常是不正常的。

另外,看看这个question

相关问题