标题:[实践OK]来自swoole的课程里讲的需要规避的CentOS 大量的TIME_WAIT解决方法,time_wait状态产生的原因,危害,如何避免 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Thu, 29 Aug 2019 09:05:28 +0000 作者:jackxiang 地址:http://jackxiang.com/post/10274/ 内容: TimeWait过多时,两个方面做处理: 1)打开: cat /etc/sysctl.conf|grep -Eri "reuse|timestamps|local_port_range" net.ipv4.ip_local_port_range = 2000 65000 #CS模型的C端端口范围增大到65000 net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_tw_reuse = 1 #这个是重用客户端的四元里的二元,这个容易和tcp_tw_recycle 记混,下面这个tcp_tw_recycle这个项最好关掉,容易出现并引发疑难问题。 如果是安全可控制,可以复用处于TIME_WAIT的套接字为新的连接所用。1)只适用于连接发起方。 也就是CS模型的客户端。2)对应TIME_WAIT状态的连接创建超过1秒才可以被复用。所以,上面这个net.ipv4.tcp_timestamps = 1 ,也就是是打开对TCP时间戳的支持,默认即为1秒。 net.ipv4.ip_local_port_range = 1024 65535 #调大 2)关闭: 不要开启:net.ipv4.tcp_tw_recycle = 1 #不关容易出现并引发疑难问题 cat /etc/sysctl.conf|grep -Eri "tcp_tw_recycle" net.ipv4.tcp_tw_recycle = 1 ======================================================================= 出现在redis在PHP里主动关闭高并发时候,redis在php-fpm请求完关了,可能是php主动关了,被动方认为有错误发生。 taimwait主要是把本地发起请求的端口范围给占满了,出现client不可用新端口client到server。 假设发起主动关闭的一方(client)最后发送的ACK在网络中丢失,由于TCP协议的重传机制,执行被动关闭的一方(server)将会重发其FIN,在该FIN到达client之前,client必须维护这条连接状态,也就说这条TCP连接所对应的资源(client方的local_ip,local_port)不能被立即释放或重新分配,直到另一方重发的FIN达到之后,client重发ACK后,经过2MSL时间周期没有再收到另一方的FIN之后,该TCP连接才能恢复初始的CLOSED状态。如果主动关闭一方不维护这样一个TIME_WAIT状态,那么当被动关闭一方重发的FIN到达时,主动关闭一方的TCP传输层会用RST包响应对方,这会被对方认为是有错误发生,然而这事实上只是正常的关闭连接过程,并非异常。 摘自:https://blog.csdn.net/huangyimo/article/details/81505558 参数调整: CentOS 大量的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 时间 修改之后,再用 netstat -n -p -t发现大量的TIME_WAIT 已不存在,网站访问正常! 来自:https://www.bbsmax.com/A/ZOJPgOYyzv/ Generated by Jackxiang's Bo-blog 2.1.1 Release