如果你的mysql出現大量的TIME_WAIT,最可能的原因是mysql.colse(),才導致大量的mysql TIME_WAIT,有了原因解決辦法很簡單.
1、找到有問題的程序加入 mysql.colse()即可解決了.
2、直接修改mysql配置,設置TIME_WAIT時間不超過5秒即可.
linux系統中修改方法,代碼如下:
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 時間.
windows中的mysql修改 my.ini中加入如下代碼:
wait_timeout = 5
即可,或直接在執行sql語句:
- mysql> set global wait_timeout=10;
- --Vevb.com
- mysql> show global variables like 'wait_timeout';
- +----------------------------+-------+
- | Variable_name | Value |
- +----------------------------+-------+
- | wait_timeout | 10 |
- +----------------------------+-------+
新聞熱點
疑難解答