最近工作中碰到一个问题,springboot 配置了mysql多数据源,以前一直单线程运行,没有任务问题。最近需要多线程运行,然后一直出现下面的问题:
HikariPool-1 - Connection is not available, request timed out after 30033ms.
springboot 2.0之后,默认数据库连接池为 HikariPool,其详细属性见下文
HikariPool连接池属性详解
HikariPool连接池默认属性
网上查了很多资料,但是很多都没有解决。历经千辛万苦,最终找到了解决方案,如下:
修改前:
spring:
datasource:
datasource1:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://url:端口号/数据库名字?useunicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password: root
datasource2:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://url:端口号/数据库名字?useunicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password: root
spring:
datasource:
hikari:
maximum-pool-size: 60
data-source-properties:
setIdleTimeout: 60000
setConnectionTimeout: 60000
setValidationTimeout: 3000
setLoginTimeout: 5
setMaxLifetime: 60000
datasource1:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://url:端口号/数据库名字?useunicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password: root
datasource2:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://url:端口号/数据库名字?useunicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password: root
生产报错:HikariPool-1 - Connection is not available, request timed out after 30096ms
数据库连接超时,大概和连接数有关
1.看下sqlserver 设置的最大连接数,0代表不限制连接。数据库设置应该没有问题,可能出现在服务端
2.看下各个服务的连接数
select count(client_net_address) a, client_net_address from sys.dm_exec_connections GROUP BY
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: XXPool - Connection is not available, request timed out after 5000ms.
username: root
password: root
url: jdbc:mysql://127.0.0.1:3306/amytang?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&rewrite..
记一次数据库连接数导致的报错问题:Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
1. 复现,定时任务失败会有错误邮件提醒,每天的七点左右就会有大量定时任务失败,报错为数据库连接超时,此时页面也无法访问,提示异常。
完整错误:
HikariPool-1 - Connection is not available, request timed out after xxxxms.
造成原因:
在数据源配置时缺少配置validationTimeout属性,或者validationTimeout属性值配置过大
validationTimeout默认是5s
用于多久验证一次数据库连接池连接是否为null的时间
这个属...
今天在运行自己的项目发现一个问题,有些读取数据库能正常访问,有些读取数据库拒绝连接,发现把spring事务取消掉,就能正常读取数据,提示如下错误消息:
HikariPool-1 - Connection is not available, request timed out after 30096ms
经过几天的不懈努力,终于解决了这个问题。
因为我使用的是如下代码来连接数据库:
@Pe...