<div dir="ltr">Hi Igor<div><br></div><div>There is no special logs on the IP_1 (the reloaded one) side, only 1 log line, which is expected:</div><div>--- BEGIN ---<br></div><div>2024/03/26 13:37:55 [notice] 3928855#0: signal process started<br></div><div>--- END ---<br></div><div><br></div><div>I did not configure worker_shutdown_timeout, it is unlimited.</div><div><br></div><div>Sébastien.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 25 mars 2024 à 17:59, Igor Ippolitov <<a href="mailto:iippolitov@nginx.com">iippolitov@nginx.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>
<div>
<div>Sébastien,</div>
<div><br>
</div>
<div>Nginx should keep active connections
open and wait for a request to complete before closing.<br>
</div>
<div>A reload starts a new set of workers
while old workers wait for old connections to shut down.</div>
<div>The only exception I'm aware of is
having worker_shutdown_timeout configured: in this case a worker
will wait till this timeout and forcibly close a connection. Be
default there is no timeout.<br>
</div>
<div><br>
</div>
<div>It would be curious to see error log of
nginx at IP_1 (the reloaded one) while the reload happens. It may
explain the reason for connection resets.<br>
</div>
<div><br>
</div>
<div>Kind regards,</div>
<div>Igor.<br>
</div>
<div><br>
</div>
<div>On 25/03/2024 12:31, Sébastien Rebecchi
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div style="padding:0px 0px 0px 2px">
<div style="color:rgb(0,0,0);font-family:monospace;font-size:10pt">
<p style="margin:0px">Hello</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px">I have an issue with <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">nginx</span>
closing prematurely connections when reload is performed.</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px">I have some <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">nginx</span>
servers configured to proxy_pass requests to an upstream
group. This group itself is composed of several servers
which are <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">nginx</span>
themselves, and is configured to use <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">keepalive</span>
connections.</p>
<p style="margin:0px">When I trigger a reload (-s reload) on
an <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">nginx</span>
of one of the servers which is target of the upstream, I
see in error logs of all servers in front that connection
was reset by the <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">nginx</span>
which was reloaded.</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px">Here configuration of upstream group
(IPs are hidden replaced by IP_X):</p>
<p style="margin:0px">--- BEGIN ---</p>
<p style="margin:0px">upstream data_api {</p>
<p style="margin:0px"> random;</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px"> server IP_1:80 max_fails=3
fail_timeout=30s;</p>
<p style="margin:0px"> server IP_2:80 max_fails=3
fail_timeout=30s;</p>
<p style="margin:0px"> server IP_3:80 max_fails=3
fail_timeout=30s;</p>
<p style="margin:0px"> server IP_4:80 max_fails=3
fail_timeout=30s;</p>
<p style="margin:0px"> server IP_5:80 max_fails=3
fail_timeout=30s;</p>
<p style="margin:0px"> server IP_6:80 max_fails=3
fail_timeout=30s;</p>
<p style="margin:0px"> server IP_7:80 max_fails=3
fail_timeout=30s;</p>
<p style="margin:0px"> server IP_8:80 max_fails=3
fail_timeout=30s;</p>
<p style="margin:0px"> server IP_9:80 max_fails=3
fail_timeout=30s;</p>
<p style="margin:0px"> server IP_10:80 max_fails=3
fail_timeout=30s;</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px"> <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">keepalive</span>
20;</p>
<p style="margin:0px">}</p>
<p style="margin:0px">--- END ---</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px">Here configuration of the location
using this upstream:</p>
<p style="margin:0px">--- BEGIN ---</p>
<p style="margin:0px">location / {</p>
<p style="margin:0px"> proxy_pass <a href="http://data_api" target="_blank">http://data_api</a>;</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px"> proxy_http_version 1.1;</p>
<p style="margin:0px"> proxy_set_header Connection "";</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px"> proxy_set_header Host $host;</p>
<p style="margin:0px"> proxy_set_header X-Real-IP $real_ip;</p>
<p style="margin:0px"> proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px"> proxy_connect_timeout 2s;</p>
<p style="margin:0px"> proxy_send_timeout 6s;</p>
<p style="margin:0px"> proxy_read_timeout 10s;</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px"> proxy_next_upstream error timeout <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">http</span>_502
<span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">http</span>_504;</p>
<p style="margin:0px">}</p>
<p style="margin:0px">--- END ---</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px">And here the kind of error messages I
get when I reload <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">nginx</span>
of "IP_1":</p>
<p style="margin:0px">--- BEGIN ---</p>
<p style="margin:0px">2024/03/25 11:24:25 [error] 3758170#0:
*1795895162 <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">recv</span>()
failed (104: Connection reset by peer) while reading
response header from upstream, client: CLIENT_IP_HIDDEN,
server: SERVER_HIDDEN, request: "POST
/REQUEST_LOCATION_HIDDEN HTTP/2.0", upstream: "<a href="http://IP_1:80/REQUEST_LOCATION_HIDDEN" target="_blank">http://IP_1:80/REQUEST_LOCATION_HIDDEN</a>",
host: "HOST_HIDDEN", referrer: "REFERRER_HIDDEN"</p>
<p style="margin:0px">--- END ---</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px">I thought -s reload was doing graceful
shutdown of connections. Is it due to the fact that <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">nginx</span>
can not handle that when using <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">keepalive</span>
connections? Is it a bug?</p>
<p style="margin:0px">I am using <span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">nginx</span>
1.24.0 everywhere, no particular </p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px">Thank you for any help.</p>
<p style="margin:0px"><br>
</p>
<p style="margin:0px"><span style="text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:rgb(255,128,64)">Sébastien</span></p>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
nginx mailing list
<a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a>
<a href="https://mailman.nginx.org/mailman/listinfo/nginx" target="_blank">https://mailman.nginx.org/mailman/listinfo/nginx</a>
</pre>
</blockquote>
<p><br>
</p>
</div>
</blockquote></div>