MySQL的TIME_WAIT连接过多的解决方法


今天上MySQL服务器看了下并发,发现了以下情况

MySQL的TIME_WAIT连接过多,吓了我一跳,因为这个服务器我很少去管理,今天突然想上来看看,发现了这个问题。以下是我的解决方法


[root@localhost data]# ss -an | grep 3306 | wc -l
1402
[root@localhost data]#mysql -uroot -p


mysql> show variables like "time_timeout";

| wait_timeout               | 28800             |

终于发现问题了,这里的超时时间是28800秒j_0004.gif

然后我就使用以下的步骤解决了。


1、在/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


然后使用sysctl -p命令将其生效


2、在/etc/my.cnf中添加以下内容

#在[mysqld]中添加

[mysqld]

#这个参数是修改上面查询到的28800秒,我修改为了30秒

wait_timeout = 30


3、重启服务器即可

当然了,这个方法很笨,如果是线上的服务器就不要用这个方法了。


如果不能重启服务的可以直接修改全局变量

mysql> set global wait_timeout=30;





你可能感兴趣的:(linux,mysql,time)