Communications link failure,The last packet

 Last modified:2013-10-08 14:16:47mysql

     **********************************************web

 

      web网站使用MySQL数据库,今天忽然报如下错误:sql

      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。数据库

      缘由:服务器

      Mysql服务器默认的“wait_timeout”是8小时(也就是默认的值默认是28800秒),也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection,通俗的讲就是一个链接在8小时内没有活动,就会自动断开该链接。而链接池却认为该链接仍是有效的(由于并未校验链接的有效性),当应用申请使用该链接时,就会致使上面的报错。网站

 

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

      修改方法:MySQL经过my.ini 在spa

      # 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.net

 

      以上是在网上找到的解决方法,可是通常链接的有效时间不用修改,后来分析了如下问题,发现是因为数据库链接池的一句配置引起的:server

 

Xml代码  收藏代码

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

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

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

      解决方法将value设置为20。

相关文章
相关标签/搜索