SQLST" />
Can’t connect to MySQL server有關(guān)linux tcp連接優(yōu)化
最近有2臺web機(jī)器鏈接mysql有時會出現(xiàn)Can’t connect to MySQL server的情況,查看exception日志:
如下:
[message:protected] => SQLSTATE[HY000] [2003] Can’t connect to MySQL server on ‘192.168.1.248′(99)
1):問題描述:
2臺web機(jī)器,只有其中一臺出現(xiàn)該exception,另外一臺無此問題;
exception logs: Can’t connect to MySQL server on ‘*.*.*.*’ (99)
2):問題排查:
1、查看mysql的variables,status:
max_connect_errors = 50000max_connections = 1000max_user_connections = 200max_connect_errors = 50000max_connections = 1000max_user_connections = 200
2、ulimit -a:
3、查看netstat -anp
查看問題機(jī)器的netstat -anp,發(fā)現(xiàn)大部分都是TIME_WAIT,懷疑是tcp的問題;
將近有3萬的網(wǎng)絡(luò)套接字,此時CPU也耗盡,導(dǎo)致這么多的TCP/IP連接CPU處理不過來,而使部分TCP/IP連接超時或處理失敗
3、OS:
more /etc/sysctl.conf:
net.ipv4.tcp_syncookies = 1
新的連接可以重新使用TIME-WAIT套接字
net.ipv4.tcp_tw_reuse=1
啟動TIME-WAIT套接字狀態(tài)的快速循環(huán)功能
net.ipv4.tcp_tw_recycle=1
套接字關(guān)閉時,保持FIN-WAIT-2狀態(tài)的時間
net.ipv4.tcp_fin_timeout=30
對于所有協(xié)議的隊列,設(shè)置最大系統(tǒng)發(fā)送緩存(wmen)和接收緩存(rmem)到8M
net.core.wmem_max=8388608
net.core.rmem_max=8388608
讓參數(shù)生效。
3):問題原因:
報錯”Can’t connect to MySQL server on ‘*.*.*.*’ (99) ” 參考MySQL Client端錯誤代碼說明:錯誤代碼為99,99的含義:$perror 99 OS error code 99: Cannot assign requested address 這是一個本地OS的拋錯,表示無法分配本地地址資源(應(yīng)該是端口),socket無法創(chuàng)建
” Cannot assign requested address”,多半是由于客戶端請求過于頻繁,而Server端練級關(guān)閉后本地暫時處于TIME_WAIT,所以暫時端口都不可用導(dǎo)致。因此修改下OS參數(shù)就ok了
bitsCN.com聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com