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

标签 java spring datasource hikaricp dbcp

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

相关文章:

java - 将数据源 Oracle 11g 配置到 Apache Tomcat 7 (7.0.82) 时出错

java - 无法从上下文中获取有效的数据源。获取连接 URL '' 异常的 'null'

java - renameTo() 不起作用

java - 有没有一种优雅的方法可以在指定的超时时间内处理多个 future?

java - 无法以编程方式滚动到 JList 中的最后一项

java - 阻塞队列轮询方法在多个线程期间返回null

datasource - 如何使已发布的工作簿指向已发布的数据源而不是其嵌入的数据源

java - 如何在 Java 中将大文本(字符串)作为 REST 服务的响应发送到 REST 客户端?

spring - EntityManager persist() 方法不向数据库插入记录

java - 以编程方式在 JpaProperties 中添加 hibernate 拦截器 - Spring