当前位置:   article > 正文

Communications link failure 原因:The last packet successfully received from the server was_communications link failure the last packet succes

communications link failure the last packet successfully received from the s

最近线上日志报错:

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

报错日志解释

从服务器成功接收的最后一个数据包是87,537,289(24.3小时)毫秒前。最后一个成功发送到服务器的数据包是0毫秒前。

说明这个连接已经24个小时没有从服务器上接收数据了,而mysql上定义,如果一个连接的空闲时间超过数据库的配置参数wait_timeout的值,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。而我们的数据库的配置参数wait_timeout的值,执行sql: show variables like  'wait_timeout' , 值是86400 ,正好是24个小时。

现有配置

     

现有配置的问题

         现有项目连接池配置中未配置testWhileIdle,则默认为false;  只有设置为true,连接池才会运行清理无效连接的线程;

         目前现有的配置中testWhileIdle=false,所以不会清理连接池中认为有效,但mysql认为无效的连接;当有新的请求过来,连接池把mysl认为无效的连接分配出去,请求到达mysql就会出现上述问题。

      参考tomcat的连接池配置:Apache Tomcat 7 (7.0.109) - The Tomcat JDBC Connection Pool

连接池相关参数配置建议

      参考:阿里云druid配置参考:DruidDataSource配置 · alibaba/druid Wiki · GitHub

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/159621?site
推荐阅读
相关标签
  

闽ICP备14008679号