一、背景
Hikari作为数据库连接池,在使用的过程中偶发的出现以下异常
Cause: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
导致该错误的常有两种原因
1. 数据库重启了
2. 客户端的连接长期处于空闲状态,数据库关闭连接
二、Hikari常用配置
在继续前,先了解下HikariCP连接池的几个配置项
idleTimeout和maxLifetime会直接影响到何时将连接从连接池移除。
三、问题的解
以上的异常问题,在HikariCP的wiki中有提到
意思是:将 HikariCP的idleTimeout和maxLifeTime配置为比MySQL的wait_timeout少一分钟。
地址:https://github.com/brettwooldridge/HikariCP/wiki/FAQ#q2
首先,查看MySQL的配置
其wait_timeout为30分钟,按照wiki所说,我们调整以下的配置
1)idle-timeout、max-lifetime都改成29分钟:1740000 (毫秒)
同时,删除配置minimum-idle