mysql连接池报错:The last packet successfully received from the server was XXXXX milliseconds ago

具体报错信息

0:Communications link failure The last packet successfully received
from the server was 87,537,289 milliseconds ago. The last packet sent
successfully to the

报错日志解释

从服务器成功接收的最后一个数据包是87,537,289(24.3小时)毫秒前。最后一个成功发送到服务器的数据包是0毫秒前。说明这个连接已经24个小时没有从服务器上接收数据了,而mysql上定义,如果一个连接的空闲时间超过24个小时,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。而我们的数据库的配置参数wait_timeout的值,show variables like ‘wait_timeout’= 86400 ,正好是24个小时。

现有配置

在这里插入图片描述

现有配置的问题

现有项目连接池配置中未配置testWhileIdle,则默认为false; 只有设置为true,连接池才会运行清理无效连接的线程;
目前现有的配置中testWhileIdle=false,所以不会清理连接池中认为有效,但mysql认为无效的连接;当有新的请求过来,连接池把mysl认为无效的连接分配出去,请求到达mysql就会出现上述问题。
在这里插入图片描述
参考tomcat的连接池配置:https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

连接池相关参数配置建议

参考:阿里云druid配置参考:https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值