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。

相關文章
相關標籤/搜索