服务器出现大量TIME_WAIT解决方法

774次阅读
没有评论

TIME_WAIT 状态原理

通信双方建立 TCP 连接后,主动关闭连接的一方就会进入 TIME_WAIT 状态。

客户端主动关闭连接时,会发送最后一个 ack 后,然后会进入 TIME_WAIT 状态,再停留 2 个 MSL 时间 (后有 MSL 的解释),进入 CLOSED 状态

下图就是著名的三次握手四次分手

服务器出现大量 TIME_WAIT 解决方法

如果 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 时间 

服务器出现大量 TIME_WAIT 解决方法

可以看到优化后的效果非常好。

本文整理与互联资源

站长 QQ:1500698928

正文完
 
ddn
版权声明:本站原创文章,由 ddn 2016-08-05发表,共计660字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。