HikariCP 连接泄漏检测和休眠
HikariCP connection leak detection and hibernate
是否可以在2.3.9 版本中启用泄漏检测?正如我之前在 中所说,Hibernate 使用的是 HikariCP 的 2.3.3 版。截至2016年2月,他们已经升级了HikariCP的版本,可惜升级到了2.3.9
我需要启用泄漏检测才能修复它们。
我在休眠配置文件中添加了以下行:
<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]
leakDetectionThreshold 不是数据源的 属性,它是特定于 hikaricp 的。
尝试删除单词 'dataSource' 为:
<property name="hibernate.hikari.leakDetectionThreshold">30000</property>
对我来说,leakDetectionThreshold 属性 没有按预期工作。尝试增加其余的 'timeout' 属性,看看什么适合您。
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
仍然尝试调查为什么会发生这种情况,因为经常出现这些异常是不正常的。
另外,看看这个
是否可以在2.3.9 版本中启用泄漏检测?正如我之前在
我需要启用泄漏检测才能修复它们。 我在休眠配置文件中添加了以下行:
<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]
leakDetectionThreshold 不是数据源的 属性,它是特定于 hikaricp 的。 尝试删除单词 'dataSource' 为:
<property name="hibernate.hikari.leakDetectionThreshold">30000</property>
对我来说,leakDetectionThreshold 属性 没有按预期工作。尝试增加其余的 'timeout' 属性,看看什么适合您。
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
仍然尝试调查为什么会发生这种情况,因为经常出现这些异常是不正常的。
另外,看看这个