Spring hikari连接池不能获取连接错误

本文讲述了作者在正式环境中遇到数据库连接超时的问题,通过分析日志发现HikariPool配置错误。调整后,配置正确并解决了连接池不足导致的连接问题。关键在于将hikari配置移至dataSouce下一层。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天发现正式环境出现不能获取连接,连接超时的错误

### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed o
ut after 33868ms.
### The error may exist in class path resource [mapper/xxxx.xml]
### The error may involve 
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 33868ms.
        at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:76)
        at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426)
        ... 36 common frames omitted

打开日志:

2022-07-13 15:25:49,525 [HikariPool-1 housekeeper] DEBUG [com.zaxxer.hikari.pool.HikariPool] HikariPool.java:421 - HikariPool-1 - Pool stats (total=10, active=2, idle=8, waiting=0)
2022-07-13 15:25:49,525 [HikariPool-1 housekeeper] DEBUG [com.zaxxer.hikari.pool.HikariPool] HikariPool.java:517 - HikariPool-1 - Fill pool skipped, pool is at sufficient level.
2022-07-13 15:26:19,525 [HikariPool-1 housekeeper] DEBUG [com.zaxxer.hikari.pool.HikariPool] HikariPool.java:421 - HikariPool-1 - Pool stats (total=10, active=0, idle=10, waiting=0)
2022-07-13 15:26:19,525 [HikariPool-1 housekeeper] DEBUG [com.zaxxer.hikari.pool.HikariPool] HikariPool.java:517 - HikariPool-1 - Fill pool skipped, pool is at sufficient level.

判断配置的连接池参数问题,发现配置错误,hikari和datasouce在同一个层级啦,应该是在datasource下面一层

#错误配置
spring
    datasorce:
        url:
    hikari:
      connection-test-query: SELECT 1 FROM DUAL
      connection-timeout: 200000
      maximum-pool-size: 9000
      minimum-idle: 300
      max-lifetime: 1800000
      leak-detection-threshold: 60000

#正确配置
spring
    datasorce:
        url:
        hikari:
          connection-test-query: SELECT 1 FROM DUAL
          

修改后:连接池正常啦。

2022-07-13 15:32:24,652 [HikariPool-1 housekeeper] DEBUG [com.zaxxer.hikari.pool.HikariPool] HikariPool.java:421 - HikariPool-1 - Before cleanup stats (total=301, active=0, idle=301, waiting=0)
2022-07-13 15:32:24,653 [HikariPool-1 housekeeper] DEBUG [com.zaxxer.hikari.pool.HikariPool] HikariPool.java:421 - HikariPool-1 - After cleanup  stats (total=301, active=0, idle=301, waiting=0)
2022-07-13 15:32:24,653 [HikariPool-1 housekeeper] DEBUG [com.zaxxer.hikari.pool.HikariPool] HikariPool.java:517 - HikariPool-1 - Fill pool skipped, pool is at sufficient level.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值