<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]来自swoole的课程里讲的需要规避的CentOS 大量的TIME_WAIT解决方法,time_wait状态产生的原因，危害，如何避免]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Web服务器]]></category>
<pubDate>Thu, 29 Aug 2019 01:05:28 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	TimeWait过多时，两个方面做处理：<br/>1）打开：<br/>cat /etc/sysctl.conf&#124;grep&nbsp;&nbsp;-Eri &quot;reuse&#124;timestamps&#124;local_port_range&quot; <br/>net.ipv4.ip_local_port_range = 2000 65000&nbsp;&nbsp; #CS模型的C端端口范围增大到65000<br/>net.ipv4.tcp_timestamps = 1<br/>net.ipv4.tcp_tw_reuse&nbsp;&nbsp;= 1&nbsp;&nbsp; #这个是重用客户端的四元里的二元，这个容易和tcp_tw_recycle 记混，下面这个tcp_tw_recycle这个项最好关掉，容易出现并引发疑难问题。<br/>如果是安全可控制，可以复用处于TIME_WAIT的套接字为新的连接所用。1）只适用于连接发起方。 也就是CS模型的客户端。2）对应TIME_WAIT状态的连接创建超过1秒才可以被复用。所以，上面这个net.ipv4.tcp_timestamps = 1 ，也就是是打开对TCP时间戳的支持，默认即为1秒。<br/><br/>net.ipv4.ip_local_port_range = 1024 65535&nbsp;&nbsp; #调大<br/><br/>2）关闭：<br/>不要开启：net.ipv4.tcp_tw_recycle = 1&nbsp;&nbsp; #不关容易出现并引发疑难问题<br/>cat /etc/sysctl.conf&#124;grep&nbsp;&nbsp;-Eri &quot;tcp_tw_recycle&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>net.ipv4.tcp_tw_recycle = 1<br/><br/>=======================================================================<br/>出现在redis在PHP里主动关闭高并发时候，redis在php-fpm请求完关了，可能是php主动关了，被动方认为有错误发生。<br/>taimwait主要是把本地发起请求的端口范围给占满了，出现client不可用新端口client到server。<br/><br/>假设发起主动关闭的一方（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包响应对方，这会被对方认为是有错误发生，然而这事实上只是正常的关闭连接过程，并非异常。<br/><br/>摘自：https://blog.csdn.net/huangyimo/article/details/81505558<br/><br/><br/>参数调整：<br/>CentOS 大量的TIME_WAIT解决方法:<br/>TIME_WAIT状态的连接，通过调整内核参数解决，<br/><br/>vi /etc/sysctl.conf 编辑文件，加入以下内容：<br/><br/>net.ipv4.tcp_syncookies = 1<br/>net.ipv4.tcp_tw_reuse = 1<br/>net.ipv4.tcp_tw_recycle = 1<br/>net.ipv4.tcp_fin_timeout = 30 然后执行<br/><br/>/sbin/sysctl -p让参数生效。<br/><br/>net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时，启用cookies来处理，可防范少量SYN攻击，默认为0，表示关闭；<br/><br/>net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接，默认为0，表示关闭；<br/><br/>net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收，默认为0，表示关闭。<br/><br/>net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间<br/><br/>修改之后，再用<br/><br/>netstat -n -p -t发现大量的TIME_WAIT 已不存在，网站访问正常！<br/><br/><br/>来自：https://www.bbsmax.com/A/ZOJPgOYyzv/
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]来自swoole的课程里讲的需要规避的CentOS 大量的TIME_WAIT解决方法,time_wait状态产生的原因，危害，如何避免]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>