MySQL dbcp 下连接空闲8小时自动断开问题解决方案

项目MySQL数据源用的dbcp,部署好后,运行了一段进时间后报如下错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 86,191,288 milliseconds ago.  
The last packet sent successfully to the server was 86,191,374 milliseconds ago. is longer than the server configured value of 'wait_timeout'. 
You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, 
or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

看到这个提示第一时间就是在连接地址后面加:autoReconnect=true 但是运行了一段时间后还是出来这个问题,后来在网上找了一下 这个错误5.X之前加这个可以解决我现在是5.6的所以只好继续找解决方法。

出现这个问题的原因就是:mysql连接的空闲时间超过8小时后MySQL自动断开

我们通过SQL可以看到MYSQL的设置:SHOW VARIABLES LIKE '%timeout%';

QQ截图20170818105258

一般不建议修改mysql默认的wait_timeout值。

直接在dbcp的配置中简单配置即可:

//这个值要小于mysql中的 'wait_timeout' 28800   
timeBetweenEvictionRunsMillis = 20000 

minEvictableIdleTimeMillis = 28000 


(1)