如果你的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>setglobalwait_timeout=10;
- --phpfensi.com
- mysql>showglobalvariableslike'wait_timeout';
- +----------------------------+-------+
- |Variable_name|Value|
- +----------------------------+-------+
- |wait_timeout|10|
- +----------------------------+-------+