從MySQL 5.x的某個(gè)版本之后,MySQL的自動(dòng)關(guān)閉空閑連接的特性被修改了,假如一個(gè)連接空閑到超時(shí)時(shí)間(默認(rèn)28000秒8小時(shí)),再次發(fā)起
最近碰到了這個(gè)問題,檢查后發(fā)現(xiàn)MySQL數(shù)據(jù)庫連接池中保存的連接超時(shí)后失效了,下面是官方的解釋
從MySQL 5.x的某個(gè)版本之后,MySQL的自動(dòng)關(guān)閉空閑連接的特性被修改了,假如一個(gè)連接空閑到超時(shí)時(shí)間(默認(rèn)28000秒8小時(shí)),再次發(fā)起的Reconnect重新連接請(qǐng)求不會(huì)被接受,需要重新建立新連接,這就導(dǎo)致了SER的重連機(jī)制不能正常工作:SER只會(huì)在需要操作數(shù)據(jù)庫時(shí)去使用同一個(gè)連接接口,斷開了則發(fā)起重新連接請(qǐng)求,而且這個(gè)問題短期內(nèi)SER也不能夠解決。
下文中將具體講述處理的方法:
1.使用Mysql 4.0或4.1版本,如果沒有用到Mysql 5的一些新特性比如存儲(chǔ)過程觸發(fā)器之類。
2.定時(shí)重啟Mysql服務(wù)器或Ser(由于本問題可能同樣會(huì)影響到其它一些需要Mysql支持的服務(wù)器程序,所以重啟Mysql服務(wù)器為好,但需要檢測(cè)Mysql服務(wù)器不被使用的一個(gè)時(shí)間重啟比較難確定)
3.設(shè)置my.cnf,有mysqld字段內(nèi)增加參數(shù):
[mysqld]port = 3306socket = /tmp/mysql.sockwait_timeout= 500000interactive_timeout = 500000(500000秒約五六天的超時(shí)時(shí)間,可根據(jù)實(shí)際需要選擇一個(gè)數(shù)據(jù)庫可能空閑的最長(zhǎng)時(shí)間稍大的時(shí)間值。)重啟Mysqld應(yīng)用即可,也可以在執(zhí)行mysqld時(shí)加-o wait_timeout=500000參數(shù)同樣效果。
在MySQL客戶端show variable時(shí)應(yīng)該可以看到最后一條從默認(rèn)的wait_time=28000變成500000了。
(假如重啟Mysqld不生效,,可以重啟機(jī)子)
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com