公司有一臺linux服務器專門用來跑公司的web服務,由于歷史原因,站點數(shù)與頁面非常多,導致經(jīng)常出現(xiàn)大量的sleep進程;mysql服務器所支持的最大連接數(shù)是有上限的,因為每個連接的建立都會消耗內(nèi)存,因此我們希望客戶端在連接到mysql server處理完相應的操作后,應該斷開連接并釋放占用的內(nèi)存。如果你的mysql server有大量的閑置連接,他們不僅會白白消耗內(nèi)存,而且如果連接一直在累加而不斷開,最終肯定會達到mysql server的連接上限數(shù),這會報’too many connections’的錯誤。對于wait_timeout的值設定,應該根據(jù)系統(tǒng)的運行情況來判斷。在系統(tǒng)運行一段時間后,可以通過show processlist命令查看當前系統(tǒng)的連接狀態(tài),如果發(fā)現(xiàn)有大量的sleep狀態(tài)的連接進程,則說明該參數(shù)設置的過大,可以進行適當?shù)恼{(diào)整小些。
經(jīng)查詢發(fā)現(xiàn)原來mysql沒有進行過優(yōu)化,還是原來的默認值:28800(即8個小時)
編輯 /etc/my.cnf,在mysqld 下 新增 timeout參數(shù),設置為120秒,如下:
【mysqld】
wait_timeout=120
interactive_timeout=120注意:要同時設置interactive_timeout和wait_timeout才會生效。
最后重啟一下mysql 生效即可!
當然你也可以寫shell腳本去控制,但是不僅建議這么操作!