广州网站建设| 广州网站制作| 广州网站设计找爱站网络

网站建设
联系我们

TIME_WAIT状态异常消除方法-快速回收 (方法1)

发布于:2016-04-11 14:58来源:未知 作者:爱站之家 点击:
很多用户说他们的TIME_WAIT等待系统回收  服务器很卡 求助于我  今天分享个方法给大家
这周一台新server要上线,突然想起用的是短链接,而且是client端主动断链接,于是就
 
netstat -lan
 
看了一下,果然发现大量的TIME_WAIT(9000左右),即系统在发现客户端断掉链接之后的等待状态,解决方法就是打开机器的快速回收。
命令如下:
 
cd /proc/sys/net/ipv4 
echo 1 > tcp_tw_recycle
 
过几分钟,在用netstat看一下,果然降到了100左右~~
 
如果,没有开快速回收就上外网……,结果可以想象了……
 
 
发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,
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 时间
 
修改之后,再用
netstat -ae|grep mysql
tcp        0      0 aaaa:50408               192.168.12.13:mysql           ESTABLISHED nobody     3224651
tcp        0      0 aaaa:50417               192.168.12.13:mysql           ESTABLISHED nobody     3224673
tcp        0      0 aaaa:50419               192.168.12.13:mysql           ESTABLISHED nobody     3224675
 
       发现大量的TIME_WAIT 已不存在,mysql进程的占用率很快就降下来的,各网站访问正常!!
       以上只是暂时的解决方法,最后仔细巡查发现是前天新上线的一个系统,程序代码中没有使用mysql.colse(),才导致大量的mysql  TIME_WAIT  
 
------分隔线----------------------------
------分隔线----------------------------