本文作者:开源技术之家

【Mysql】异常:Communications link failure 详解

开源技术之家 2年前 ( 2018-07-17 ) 1382 抢沙发

错误信息

Communications link failure:The last packet successfully received from the server was 344,068 milliseconds ago.  

The last packet sent successfully to the server was 3 milliseconds ago.


错误分析

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。


解决方案

     wait timeout的值可以设定,但最多只能是2147483,不能再大了。也就是约24.85天。

      修改方法:MySQL通过my.ini 在

      # The TCP/IP Port the MySQL Server will listen on
      port=3306下面添加
      # this is myown dinifition for mysql connection timeout
      wait_timeout=31536000
      interactive_timeout=31536000

      以上是在网上找到的解决方法,但是一般连接的有效时间不用修改,后来分析了以下问题,发现是由于数据库连接池的一句配置引发的:

Xml代码
    <!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->   
  

 <property name="maxIdleTime" value="0"></property>


      由于mysql的连接空闲超过8个小时,所以就关闭了,但是连接池却永不丢弃连接,认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。

      解决方法将value设置为20。


本文标题:【Mysql】异常:Communications link failure 详解
本文链接:https://www.kyjszj.com/sjkzq/31.html
作者授权:除特别说明外,本文由 开源技术之家 原创编译并授权 开源技术之家 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。
文章版权及转载声明

作者:开源技术之家本文地址:https://www.kyjszj.com/sjkzq/31.html发布于 2年前 ( 2018-07-17 )
文章转载或复制请以超链接形式并注明出处开源技术之家

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,1382人围观)参与讨论

还没有评论,来说两句吧...