<div dir="ltr">hi nginx:<br>&nbsp; please give me some help or hint:<br>&nbsp; I encountered a problem while ssi delegaties back end memcached servers. (ssi dispatches each include to a location with memcache_pass , which takes use of upstream.)<br>
&nbsp;<br>&nbsp; <br>ssi file looks like:<br>&nbsp;&nbsp;&nbsp; &lt;!--# include virtual=&quot;/key?db_1&quot; --&gt; <br>&nbsp;&nbsp;&nbsp; &lt;!--# include virtual=&quot;/key?db_2&quot; --&gt;<br>&nbsp;&nbsp;&nbsp; &lt;!--# include virtual=&quot;/key?db_3&quot; --&gt;<br>....<br>
<br>After request for the url point to the ssi file, there is half of the chances I cant get any response. Request is blocked for 60 seconds(the epoll time-out)&nbsp; ends with nothing. <br>Sometimes I got the right response. the more include directives there are, the more chances requests are blocked.<br>
<br> But if I add &#39;wait=&quot;yes&quot;&#39; attribute to each include, there will be no problem.<br><br>I straced nginx, found that nginx closes the incorrect FD.<br><br><font face="monospace"><span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;43 </font></span>epoll_wait(8,
{{EPOLLOUT, {u32=166951744, u64=13826368082478857024}}, {EPOLLOUT,
{u32=166951824, u64=13826368082478857104}}, {EPOLLOUT, {u32=166951664,
u64=13826368082478856944}}, {EPOLLOUT, {u32=166951584,
u64=13826368082478856864}}, {EPOLLOUT, {u32=166951504,
u64=13826368082478856784}}, {EPOLLOUT, {u32=166951424,
u64=13826368082478856704}}, {EPOLLOUT, {u32=166951344,
u64=13826368082478856624}}, {EPOLLOUT, {u32=166951264,
u64=13826368082478856544}}, {EPOLLOUT, {u32=166951184,
u64=13826368580695062800}}}, 512, 60000) = 9<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;44 </font></span>gettimeofday({1217429875, 344754}, NULL) = 0<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;45 </font></span>getsockopt(16, SOL_SOCKET, SO_ERROR, [0], [4]) = 0<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;46 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(16, [{&quot;get db_8\r\n&quot;, 10}], 1)&nbsp;&nbsp; = 10<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;47 </font></span>getsockopt(15, SOL_SOCKET, SO_ERROR, [0], [4]) = 0<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;48 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(15, [{&quot;get db_7\r\n&quot;, 10}], 1)&nbsp;&nbsp; = 10<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;49 </font></span>getsockopt(14, SOL_SOCKET, SO_ERROR, [0], [4]) = 0<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;50 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(14, [{&quot;get db_6\r\n&quot;, 10}], 1)&nbsp;&nbsp; = 10<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;51 </font></span>getsockopt(13, SOL_SOCKET, SO_ERROR, [0], [4]) = 0<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;52 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(13, [{&quot;get db_5\r\n&quot;, 10}], 1)&nbsp;&nbsp; = 10<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;53 </font></span>getsockopt(12, SOL_SOCKET, SO_ERROR, [0], [4]) = 0<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;54 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(12, [{&quot;get db_4\r\n&quot;, 10}], 1)&nbsp;&nbsp; = 10<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;55 </font></span>getsockopt(11, SOL_SOCKET, SO_ERROR, [0], [4]) = 0<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;56 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(11, [{&quot;get db_3\r\n&quot;, 10}], 1)&nbsp;&nbsp; = 10<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;57 </font></span>getsockopt(10, SOL_SOCKET, SO_ERROR, [0], [4]) = 0<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;58 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(10, [{&quot;get db_2\r\n&quot;, 10}], 1)&nbsp;&nbsp; = 10<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;59 </font></span>getsockopt(9, SOL_SOCKET, SO_ERROR, [0], [4]) = 0<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;60 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(9, [{&quot;get db_1\r\n&quot;, 10}], 1)&nbsp;&nbsp;&nbsp;&nbsp;= 10<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;61 </font></span><span style="background-color: rgb(164, 229, 126);"><font color="#000000">recv</font></span>(6, 0xbfe125db, 1, MSG_PEEK)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= -1 EAGAIN (Resource temporarily unavailable)<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;62 </font></span><br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;63 </font></span>epoll_wait(8,
{{EPOLLIN|EPOLLOUT, {u32=166951344, u64=13826368082478856624}},
{EPOLLIN|EPOLLOUT, {u32=166951424, u64=13826368082478856704}},
{EPOLLIN|EPOLLOUT, {u32=166951504, u64=13826368082478856784}},
{EPOLLIN|EPOLLOUT, {u32=166951584, u64=13826368082478856864}},
{EPOLLIN|EPOLLOUT, {u32=166951664, u64=13826368082478856944}},
{EPOLLIN|EPOLLOUT, {u32=166951824, u64=13826368082478857104}},
{EPOLLIN|EPOLLOUT, {u32=166951744, u64=13826368082478857024}}}, 512,
59997) = 7<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;64 </font></span>gettimeofday({1217429875, 346743}, NULL) = 0<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;65 </font></span><span style="background-color: rgb(164, 229, 126);"><font color="#000000">recv</font></span>(10, &quot;VALUE db_2 0 1\r\n2\r\nEND\r\n&quot;, 100, 0) = 24<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;66 </font></span>setsockopt(6, SOL_TCP, TCP_NODELAY, [1], 4) = 0<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;67 </font></span><span style="background-color: rgb(255, 219, 114);"><font color="#000000">close</font></span>(9)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;68 </font></span><span style="background-color: rgb(164, 229, 126);"><font color="#000000">recv</font></span>(11, &quot;VALUE db_3 0 1\r\n3\r\nEND\r\n&quot;, 100, 0) = 24<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;69 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(6,
[{&quot;HTTP/1.1 200 OK\r\nServer: nginx/0&quot;..., 165}, {&quot;5\r\n&quot;, 3},
{&quot;Var=[&quot;, 5}, {&quot;\r\n&quot;, 2}, {&quot;1\r\n&quot;, 3}, {&quot;,&quot;, 1}, {&quot;\r\n&quot;, 2},
{&quot;1\r\n&quot;, 3}, {&quot;2&quot;, 1}, {&quot;\r\n&quot;, 2}], 10) = 187<br>
<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;70 </font></span><span style="background-color: rgb(255, 219, 114);"><font color="#000000">close</font></span>(10)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;71 </font></span><span style="background-color: rgb(164, 229, 126);"><font color="#000000">recv</font></span>(12, &quot;VALUE db_4 0 1\r\n4\r\nEND\r\n&quot;, 100, 0) = 24<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;72 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(6, [{&quot;1\r\n&quot;, 3}, {&quot;,&quot;, 1}, {&quot;\r\n&quot;, 2}, {&quot;1\r\n&quot;, 3}, {&quot;3&quot;, 1}, {&quot;\r\n&quot;, 2}], 6) = 12<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;73 </font></span><span style="background-color: rgb(255, 219, 114);"><font color="#000000">close</font></span>(11)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;74 </font></span><span style="background-color: rgb(164, 229, 126);"><font color="#000000">recv</font></span>(13, &quot;VALUE db_5 0 1\r\n5\r\nEND\r\n&quot;, 100, 0) = 24<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;75 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(6, [{&quot;1\r\n&quot;, 3}, {&quot;,&quot;, 1}, {&quot;\r\n&quot;, 2}, {&quot;1\r\n&quot;, 3}, {&quot;4&quot;, 1}, {&quot;\r\n&quot;, 2}], 6) = 12<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;76 </font></span><span style="background-color: rgb(255, 219, 114);"><font color="#000000">close</font></span>(12)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;77 </font></span><span style="background-color: rgb(164, 229, 126);"><font color="#000000">recv</font></span>(14, &quot;VALUE db_6 0 1\r\n6\r\nEND\r\n&quot;, 100, 0) = 24<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;78 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(6, [{&quot;1\r\n&quot;, 3}, {&quot;,&quot;, 1}, {&quot;\r\n&quot;, 2}, {&quot;1\r\n&quot;, 3}, {&quot;5&quot;, 1}, {&quot;\r\n&quot;, 2}], 6) = 12<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;79 </font></span><span style="background-color: rgb(255, 219, 114);"><font color="#000000">close</font></span>(13)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;80 </font></span><span style="background-color: rgb(164, 229, 126);"><font color="#000000">recv</font></span>(15, &quot;VALUE db_7 0 1\r\n7\r\nEND\r\n&quot;, 100, 0) = 24<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;81 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(6, [{&quot;1\r\n&quot;, 3}, {&quot;,&quot;, 1}, {&quot;\r\n&quot;, 2}, {&quot;1\r\n&quot;, 3}, {&quot;6&quot;, 1}, {&quot;\r\n&quot;, 2}], 6) = 12<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;82 </font></span><span style="background-color: rgb(255, 219, 114);"><font color="#000000">close</font></span>(14)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;83 </font></span><span style="background-color: rgb(164, 229, 126);"><font color="#000000">recv</font></span>(16, &quot;VALUE db_8 0 1\r\n8\r\nEND\r\n&quot;, 100, 0) = 24<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;84 </font></span><span style="background-color: rgb(140, 203, 234);"><font color="#000000">writev</font></span>(6, [{&quot;1\r\n&quot;, 3}, {&quot;,&quot;, 1}, {&quot;\r\n&quot;, 2}, {&quot;1\r\n&quot;, 3}, {&quot;7&quot;, 1}, {&quot;\r\n&quot;, 2}], 6) = 12<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;85 </font></span><span style="background-color: rgb(255, 219, 114);"><font color="#000000">close</font></span>(15)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br>

<span style="background-color: rgb(211, 211, 211);"><font color="#a52a2a">&nbsp;86 </font></span>epoll_wait(8, </font><br clear="all"><br><br>Anybody might had experienced such problem can help me? I&#39;ll be very appreciated.<br>
<br>Is it a known bug?<br>I am trying to solve this problem, looking for something help through source-codes.<br><br>-- <br>要了几天饱饭就不记得西北风啥味了<br>
</div>