HikariPool-1 - 连接不可用,请求在30000ms后超时,对于非常小的负载服务器

2022-09-01 11:57:38

我有一个用于测试目的的小型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)

以下是我最初对光的设置。

 HikariConfig config = new HikariConfig();
            config.setJdbcUrl("jdbc:mysql://localhost:3306/****"); 
            config.setUsername("***"); 
            config.setPassword("*****");      
            config.setMaximumPoolSize(20);  

它几乎没有被使用我的两个设备,我确保在最后我确实关闭了它。所以我不知道为什么它不断得到错误?可能是什么问题,或者是否有一些设置需要更改?

我的hikari版本是HikariCP-2.6.1.jar。


答案 1

由于网络延迟或某些查询执行时间过长(超过 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);

答案 2

我正在使用弹簧靴,我遇到了同样的问题,我的解决方案是获得这样的连接“ 。所以我从 改为 .DataSourceUtils.getConnection(dataSource)dataSource.getConnection()DataSourceUtils.getConnection(dataSource)


推荐