如果你的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;
-
- mysql> show global variables like 'wait_timeout';
- +
- | Variable_name | Value |
- +
- | wait_timeout | 10 |
- +
|