今天上MySQL服务器看了下并发,发现了以下情况
MySQL的TIME_WAIT连接过多,吓了我一跳,因为这个服务器我很少去管理,今天突然想上来看看,发现了这个问题。以下是我的解决方法
[[email protected] data]# ss -an | grep 3306 | wc -l
1402
[[email protected] data]#mysql -uroot -p
mysql> show variables like "time_timeout";
| wait_timeout | 28800 |
终于发现问题了,这里的超时时间是28800秒
然后我就使用以下的步骤解决了。
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;
时间: 2024-10-07 11:14:26