mysql解決大量time_wait


mysql解決大量time_wait

命令查看TIME_WAIT連接數
netstat -ae|grep "TIME_WAIT" |wc -l
早上登陸服務器的時候輸入netstat -an|grep mysql
發現存在大量TIME_WAIT狀態的連接
tcp        0      0 127.0.0.1:3306              127.0.0.1:41378             TIME_WAIT
tcp        0      0 127.0.0.1:3306              127.0.0.1:41379             TIME_WAIT
tcp        0      0 127.0.0.1:3306              127.0.0.1:39352             TIME_WAIT
tcp        0      0 127.0.0.1:3306              127.0.0.1:39350             TIME_WAIT
tcp        0      0 127.0.0.1:3306              127.0.0.1:35763             TIME_WAIT
tcp        0      0 127.0.0.1:3306              127.0.0.1:39372             TIME_WAIT
tcp        0      0 127.0.0.1:3306              127.0.0.1:39373             TIME_WAIT
tcp        0      0 127.0.0.1:3306              127.0.0.1:41176             TIME_WAIT
 
 
 
通過調整內核參數解決
vi /etc/sysctl.conf
 
編輯文件,加入以下內容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
 
然后執行/sbin/sysctl -p讓參數生效。
 
net.ipv4.tcp_syncookies = 1表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關閉;
 
net.ipv4.tcp_tw_reuse = 1表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0,表示關閉;
 
net.ipv4.tcp_tw_recycle = 1表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
 
net.ipv4.tcp_fin_timeout修改系統默認的TIMEOUT時間
 
修改之后,再用命令查看TIME_WAIT連接數
netstat -ae|grep "TIME_WAIT" |wc –l
 
   發現大量的TIME_WAIT 已不存在,mysql進程的占用率很快就降下來的,網站訪問正常。
 不過很多時候,出現大量的TIME_WAIT狀態的連接,往往是因為網站程序代碼中沒有使用mysql.colse(),才導致大量的mysql  TIME_WAIT.

mysql 大量time wait 解決辦法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM