网上说法:
MySQL服务器默认的空闲时间超过8个小时,MySQL将自动断开该连接,而连接池却认为该连接还是有效的,当应用申请使用该连接时,就会报错:Communications link failure,The last packet successfully received from the server was * millisecond ago.The last packet successfully sent to the server was * millisecond ago。
其实这个原因是接近的。
但是我们这里的架构是:jdbc–>HA–>Mycat–>MySql
所以如果HA对连接的空闲时间设置为10分钟自动断开连接的话,而且jdbc的空闲连接为10分钟以上,就会出现这个报错。
比如:jdbc(> 10min)–>HA(=10min)
所以要么将HA的改大,要么将jdbc的改小(一般就是idleMaxAge)。