先附上完整报错,com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure\n\nThe last packet successfully received from the server was 10,004 milliseconds ago. The last packet sent successfully to the server was 10,004 milliseconds ago.
首先在网上搜索,有以下解决方案:
1、在数据库url上加,autoReconnect=true
并不能解决问题
2、猜疑是数据库关闭了空闲时间超过28800秒(8小时)的连接,但上述报错显示10秒前还能成功,故排除这种大概。
而且druid连接池在1.2.6版本以后针对空闲连接有默认探活和剔除机制,会将空闲超过25600秒(7小时)的连接踢出,并默认60s举行一次探活。
3、后来就猜疑存在慢查询,从而导致以上错误,待验证
别的:发现只要在网上搜索以上问题都会让修改数据库的超时时间和连接池的超时时间,其实这种表述是禁绝确的,对于数据库来说是空闲连接超时时间,对于连接池来说,有很多个超时时间,需要去查找每个的界说。而且,连接池的默认参数配置刚好能制止由于空闲连接超时导致数据库关闭了连接但连接池还不知道的环境。当然手动修改数据库wait_timeout的环境除外。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |