MySQL8小时连接超时断开问题
?
?使用Connector/J連接MySQL數(shù)據(jù)庫,程序運(yùn)行較長時(shí)間后就會(huì)報(bào)以下錯(cuò)誤:
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。
?其中錯(cuò)誤還會(huì)提示你修改wait_timeout或是使用Connector/J的autoReconnect屬性避免該錯(cuò)誤。
?后來查了一些資料,才發(fā)現(xiàn)遇到這個(gè)問題的人還真不少,大部分都是使用連接池方式時(shí)才會(huì)出現(xiàn)這個(gè)問題,短連接應(yīng)該很難出現(xiàn)這個(gè)問題。這個(gè)問題的原因:
MySQL服務(wù)器默認(rèn)的“wait_timeout”是28800秒即8小時(shí),意味著如果一個(gè)連接的空閑時(shí)間超過8個(gè)小時(shí),MySQL將自動(dòng)斷開該連接,而連接池卻認(rèn)為該連接還是有效的(因?yàn)椴⑽葱r?yàn)連接的有效性),當(dāng)應(yīng)用申請(qǐng)使用該連接時(shí),就會(huì)導(dǎo)致上面的報(bào)錯(cuò)。
1.按照錯(cuò)誤的提示,可以在JDBC URL中使用autoReconnect屬性,實(shí)際測(cè)試時(shí)使用了autoReconnect=true&failOverReadOnly=false,不過并未起作用,使用的是5.1版本,可能真像網(wǎng)上所說的只對(duì)4之前的版本有效。
2.沒辦法,只能修改MySQL的參數(shù)了,wait_timeout最大為31536000即1年,在my.cnf中加入:
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000
重啟生效,需要同時(shí)修改這兩個(gè)參數(shù)。
?
其它版本也可以參考http://www.blogjava.net/heweiya/archive/2006/01/18/28483.html
轉(zhuǎn)載于:https://blog.51cto.com/cau99/348783
總結(jié)
以上是生活随笔為你收集整理的MySQL8小时连接超时断开问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 警惕谷歌新形式的垄断
- 下一篇: 每天在竞争中淘汰自己