我有一个用于测试目的的小型 Java 应用程序。我最近搬到了hikari。我注意到我不断收到此错误。
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:602)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:195)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:145)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:85)
以下是我最初对 hikari 的设置。
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/****");
config.setUsername("***");
config.setPassword("*****");
config.setMaximumPoolSize(20);
我的两个设备几乎没有使用它,我确保在最后关闭它。所以我不知道为什么它不断收到错误?可能是什么问题或是否有一些我需要更改的设置?
我的 hikari 版本是 HikariCP-2.6.1.jar。
最佳答案
由于网络延迟或某些查询执行时间过长(超过 30000 毫秒),您的数据库未在(默认 connectionTimeout 属性的 30000 毫秒)内获得连接。
请尝试增加属性 connectionTimeout
的值。
YML 配置示例:
spring:
datasource:
hikari:
minimumIdle: 2
maximumPoolSize: 10
idleTimeout: 120000
connectionTimeout: 300000
leakDetectionThreshold: 300000
Java 配置示例:
HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(20);
config.setConnectionTimeout(300000);
config.setConnectionTimeout(120000);
config.setLeakDetectionThreshold(300000);
关于java - HikariPool-1 - 连接不可用,对于非常小的负载服务器,请求在 30000 毫秒后超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47758091/