MySQL數據庫提示:Communications link failure,The last packet succe

Last modified:2013-10-08 14:16:47
     **********************************************
      web網站使用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。

      原因:
      Mysql服務器默認的“wait_timeout”是8小時(也就是默認的值默認是28800秒),也就是說一個connection空閒超過8個小時,Mysql將自動斷開該connection,通俗的講就是一個連接在8小時內沒有活動,就會自動斷開該連接。而連接池卻認爲該連接還是有效的(因爲並未校驗連接的有效性),當應用申請使用該連接時,就會導致上面的報錯。

      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。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章