添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

最近工作中碰到一个问题,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...