出現異常」The last packet sent successfully to the server was 0 milliseconds ago.「的大部分緣由是因爲數據庫回收了鏈接,而系統的緩衝池不知道,繼續使用被回收的鏈接所致的。mysql
以mysql爲例:sql
第一種解決辦法,就是將mysql回收空閒鏈接的時間變長,mysql默認回收時間是8小時,能夠在mysql目錄下的my.ini中增長下面配置,將時間改成1天。數據庫
單位是秒,最大好像是24天:測試
[mysqld]線程
wait_timeout=86400server
第二種解決辦法,能夠經過配置,讓緩衝池去測試鏈接是否被回收,若是被回收,則不繼續使用,以dbcp爲例:it
#SQL查詢,用來驗證從鏈接池取出的鏈接 dbcp.validationQuery=SELECT 1 #指明鏈接是否被空閒鏈接回收器(若是有)進行檢驗,若是檢測失敗,則鏈接將被從池中去除 dbcp.testWhileIdle=true #在空閒鏈接回收器線程運行期間休眠的時間值,以毫秒爲單位,通常比minEvictableIdleTimeMillis小 dbcp.timeBetweenEvictionRunsMillis=300000 #在每次空閒鏈接回收器線程(若是有)運行時檢查的鏈接數量,最好和maxActive一致 dbcp.numTestsPerEvictionRun=50 #鏈接池中鏈接,在時間段內一直空閒,被逐出鏈接池的時間(1000*60*60),以毫秒爲單位 dbcp.minEvictableIdleTimeMillis=3600000io