spring-boot 2.7.18
spring版本 5.3.31
Hikari 版本 4.0.3
项目集成了hikari连接池,启动过一会时间,就会报
com.zaxxer.hikari.pool.PoolBase : MyHikariCP- Failed to validate connection com.mysql.jdbc.JDBC4Connection@6e2d668f (communications link failure). Possibly consider using a shorter maxLifetime value.
中文解释:可能需要设置一个maxLifetime较小的值
此属性控制池中连接的最大生存期。使用中的连接永远不会停止使用,只有在关闭连接后才将其删除。在逐个连接的基础上,应用较小的负衰减以避免池中的质量消灭。 我们强烈建议设置此值,它应该比任何数据库或基础结构施加的连接时间限制短几秒钟。 值0表示没有最大寿命(无限寿命),当然要遵守该idleTimeout设置。最小允许值为30000ms(30秒)。 默认值:1800000(30分钟)
解决方案:
主要是修改 max-lifetime这个参数
网上大部分人说这个值需要小于mysql的wait_timeout,mysql这个配置时间基本都是8小时。
所以按默认值配置,就已经小于了,但是还是出现这个问题了。
所以目前我设置为60秒,设置之后没有再出现这个错。但是大于60秒,还是会出现这个问题。
(这里有个疑问,大家有知道的帮忙解答一下)
先解决问题,修改hikari的配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
password: root
hikari:pool-name: MyHikariCP
connection-test-query: SELECT 1
connection-timeout: 10000
validation-timeout: 3000
idle-timeout: 60000
max-lifetime: 60000
maximum-pool-size: 30
minimum-idle: 10