1. 程式人生 > >兩種解決異常:“The last packet sent successfully to the server was 0 milliseconds ago. ”的辦法

兩種解決異常:“The last packet sent successfully to the server was 0 milliseconds ago. ”的辦法

  出現異常”The last packet sent successfully to the server was 0 milliseconds ago.“的大部分原因是由於資料庫回收了連線,而系統的緩衝池不知道,繼續使用被回收的連線所致的。

           以mysql為例:

           第一種解決辦法,就是將mysql回收空閒連線的時間變長,mysql預設回收時間是8小時,可以在mysql目錄下的my.ini中增加下面配置,將時間改為1天。

           單位是秒,最大好像是24天:

          [mysqld]

          wait_timeout=86400

           第二種解決辦法,可以通過配置,讓緩衝池去測試連線是否被回收,如果被回收,則不繼續使用,以dbcp為例:

          #SQL查詢,用來驗證從連線池取出的連線
          dbcp.validationQuery=SELECT 1
          #指明連線是否被空閒連接回收器(如果有)進行檢驗,如果檢測失敗,則連線將被從池中去除
          dbcp.testWhileIdle=true
          #在空閒連接回收器執行緒執行期間休眠的時間值,以毫秒為單位,一般比minEvictableIdleTimeMillis小
          dbcp.timeBetweenEvictionRunsMillis=300000
          #在每次空閒連接回收器執行緒(如果有)執行時檢查的連線數量,最好和maxActive一致
         dbcp.numTestsPerEvictionRun=50
          #連線池中連線,在時間段內一直空閒,被逐出連線池的時間(1000*60*60),以毫秒為單位
          dbcp.minEvictableIdleTimeMillis=3600000