<?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里面的通讯四次挥手问题。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Swoole专题研究]]></category>
<pubDate>Tue, 17 Sep 2019 03:18:34 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	server.php <br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
$server = new swoole_server(&quot;127.0.0.1&quot;, 6666,SWOOLE_PROCESS);&nbsp;&nbsp;#Process 时千万不要抛出错误，容易出现CLOSE_WAIT,专门有一个主进程的线程在处理连接，不会存在backlog塞满。
#$server = new swoole_server(&quot;127.0.0.1&quot;, 6666,SWOOLE_BASE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#都是Worker进程去accept，会发Fin包，服务器端不会进入CLOSE_WAIT，但是backlog容易塞满,connfd = accept( listenfd, (struct sockaddr *)&amp;clientaddr, &amp;clilen );
$server-&gt;on(&#039;connect&#039;, function ($server, $fd)&#123;
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;connection open: &#123;$fd&#125;&#92;n&quot;;
&#125;);
$server-&gt;on(&#039;receive&#039;, function ($server, $fd, $reactor_id, $data) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;$server-&gt;send($fd, &quot;Swoole: &#123;$data&#125;&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;$server-&gt;close($fd);
&#125;);
$server-&gt;on(&#039;close&#039;, function ($server, $fd) &#123;#Sleep在里面后，Sleep函数的出现无法调底层的Close方法，导致出现服务端一直处于CLOSE_WAIT，出现连接状态，客户端在FIN_WAIT2状态。
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;connection close: &#123;$fd&#125;&#92;n&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;#die(); # 进程通出
&nbsp;&nbsp;&nbsp;&nbsp;sleep(1000);
&#125;);
$server-&gt;start();
</textarea><br/><br/>ACCEPT队列（全连接队列）：由listen()函数的第二个参数 backlog 指定，内核硬限制由 net.core.somaxconn 限制，即实际的值由min(backlog,somaxconn) 来决定。表示已完成连接的队列，等待被 accept系统调用取走。<br/><br/>php server.php <br/>connection open: 1<br/>[2019-09-17 06:47:18 *9116.0]&nbsp;&nbsp; NOTICE&nbsp;&nbsp;swFactoryProcess_finish (ERRNO 1004): send 25 byte failed, because connection[fd=1] is closed<br/>connection close: 1<br/><br/>client.php<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
var_dump($client-&gt;connect(&#039;127.0.0.1&#039;,6666));
$client-&gt;send(&quot;date to kill conn&quot;);
$client-&gt;close();
sleep(1000);
</textarea><br/><br/>netstat -lantp&#124;grep 6666&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 127.0.0.1:48344&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1:6666&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIN_WAIT2&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#客户端进入&nbsp;&nbsp;FIN_WAIT2 状态&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 127.0.0.1:6666&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;127.0.0.1:48344&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLOSE_WAIT&nbsp;&nbsp;9110/php&nbsp;&nbsp;&nbsp;&nbsp; #服务器端进入CLOSE_WAIT<br/><br/><br/>https://blog.csdn.net/Tanswer_/article/details/78375317<br/><br/><br/>SYN队列（半连接队列）：由/proc/sys/net/ipv4/tcp_max_syn_backlog指定，表示处于 SYN_RECV 状态的队列<br/>ACCEPT队列（全连接队列）：由listen()函数的第二个参数 backlog 指定，内核硬限制由 net.core.somaxconn 限制，即实际的值由min(backlog,somaxconn) 来决定。表示已完成连接的队列，等待被 accept系统调用取走。<br/>原文链接：https://blog.csdn.net/Tanswer_/article/details/78375317<br/><br/><a href="https://img-blog.csdn.net/20171028140904098?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVGFuc3dlcl8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" target="_blank"><img src="https://img-blog.csdn.net/20171028140904098?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVGFuc3dlcl8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0" width="367"/></a><br/><br/>cat /proc/sys/net/ipv4/tcp_max_syn_backlog <br/>65535<br/>cat /proc/sys/net/core/somaxconn<br/>65535
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]关于swoole里面的通讯四次挥手问题。]]></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>