Welcome! Log In Create A New Profile

Advanced

Re: Nginx prematurely closing connections when reloaded

Igor Ippolitov
March 28, 2024 07:06PM
Sébastien,

Is it possible that messages go to another log file? These messages go
to the main error log file, defined in the root context.
Another common pitfall is a log level above notice. Try setting error
log to a more verbose one, maybe?

Regards,
Igor.


On 28/03/2024 18:27, Sébastien Rebecchi wrote:
> Hi Igor,
>
> Thanks for the answer.
>
> I really got that message 'signal process started' every time i do
> 'nginx -s reload' and this is the only log line I have, I don't have
> the other lines you mentioned. Is there anything to do to enable those
> logs?
>
> Sébastien
>
> Le jeu. 28 mars 2024, 16:40, Igor Ippolitov <iippolitov@nginx.com> a
> écrit :
>
> Sébastien,
>
> The message about the signal process is only the beginning of the
> process.
> You are interested in messages like the following:
>
>> 2024/03/26 13:36:36 [notice] 723#723: signal 1 (SIGHUP) received
>> from 69064, reconfiguring
>> 2024/03/26 13:36:36 [notice] 723#723: reconfiguring
>> 2024/03/26 13:36:36 [notice] 723#723: using the "epoll" event method
>> 2024/03/26 13:36:36 [notice] 723#723: start worker processes
>> 2024/03/26 13:36:36 [notice] 723#723: start worker process 69065
>> 2024/03/26 13:36:36 [notice] 723#723: start worker process 69066
>> 2024/03/26 13:36:36 [notice] 723#723: start cache manager process
>> 69067
>> 2024/03/26 13:36:36 [notice] 61903#61903: gracefully shutting down
>> 2024/03/26 13:36:36 [notice] 61905#61905: exiting
>> 2024/03/26 13:36:36 [notice] 61903#61903: exiting
>> 2024/03/26 13:36:36 [notice] 61904#61904: gracefully shutting down
>> 2024/03/26 13:36:36 [notice] 61904#61904: exiting
>> 2024/03/26 13:36:36 [notice] 61903#61903: exit
>
> Note the 'gracefully shutting down' and 'exiting' message from
> workers. Also the 'start' and 'reconfiguring' messages from the
> master process.
> There should be a similar sequence somewhere in your logs.
> Having these logs may help explaining what happens on a reload.
>
> Kind regards,
> Igor.
>
> On 26/03/2024 12:41, Sébastien Rebecchi wrote:
>> Hi Igor
>>
>> There is no special logs on the IP_1 (the reloaded one) side,
>> only 1 log line, which is expected:
>> --- BEGIN ---
>> 2024/03/26 13:37:55 [notice] 3928855#0: signal process started
>> --- END ---
>>
>> I did not configure worker_shutdown_timeout, it is unlimited.
>>
>> Sébastien.
>>
>> Le lun. 25 mars 2024 à 17:59, Igor Ippolitov
>> <iippolitov@nginx.com> a écrit :
>>
>> Sébastien,
>>
>> Nginx should keep active connections open and wait for a
>> request to complete before closing.
>> A reload starts a new set of workers while old workers wait
>> for old connections to shut down.
>> 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.
>>
>> 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.
>>
>> Kind regards,
>> Igor.
>>
>> On 25/03/2024 12:31, Sébastien Rebecchi wrote:
>>>
>>> Hello
>>>
>>>
>>> I have an issue with nginx closing prematurely connections
>>> when reload is performed.
>>>
>>>
>>> I have some nginx servers configured to proxy_pass requests
>>> to an upstream group. This group itself is composed of
>>> several servers which are nginx themselves, and is
>>> configured to use keepalive connections.
>>>
>>> When I trigger a reload (-s reload) on an nginx 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 nginx which was reloaded.
>>>
>>>
>>> Here configuration of upstream group (IPs are hidden
>>> replaced by IP_X):
>>>
>>> --- BEGIN ---
>>>
>>> upstream data_api {
>>>
>>> random;
>>>
>>>
>>> server IP_1:80 max_fails=3 fail_timeout=30s;
>>>
>>> server IP_2:80 max_fails=3 fail_timeout=30s;
>>>
>>> server IP_3:80 max_fails=3 fail_timeout=30s;
>>>
>>> server IP_4:80 max_fails=3 fail_timeout=30s;
>>>
>>> server IP_5:80 max_fails=3 fail_timeout=30s;
>>>
>>> server IP_6:80 max_fails=3 fail_timeout=30s;
>>>
>>> server IP_7:80 max_fails=3 fail_timeout=30s;
>>>
>>> server IP_8:80 max_fails=3 fail_timeout=30s;
>>>
>>> server IP_9:80 max_fails=3 fail_timeout=30s;
>>>
>>> server IP_10:80 max_fails=3 fail_timeout=30s;
>>>
>>>
>>> keepalive 20;
>>>
>>> }
>>>
>>> --- END ---
>>>
>>>
>>> Here configuration of the location using this upstream:
>>>
>>> --- BEGIN ---
>>>
>>> location / {
>>>
>>> proxy_pass http://data_api;
>>>
>>>
>>> proxy_http_version 1.1;
>>>
>>> proxy_set_header Connection "";
>>>
>>>
>>> proxy_set_header Host $host;
>>>
>>> proxy_set_header X-Real-IP $real_ip;
>>>
>>> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>>>
>>>
>>> proxy_connect_timeout 2s;
>>>
>>> proxy_send_timeout 6s;
>>>
>>> proxy_read_timeout 10s;
>>>
>>>
>>> proxy_next_upstream error timeout http_502 http_504;
>>>
>>> }
>>>
>>> --- END ---
>>>
>>>
>>> And here the kind of error messages I get when I reload
>>> nginx of "IP_1":
>>>
>>> --- BEGIN ---
>>>
>>> 2024/03/25 11:24:25 [error] 3758170#0: *1795895162 recv()
>>> 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:
>>> "http://IP_1:80/REQUEST_LOCATION_HIDDEN
>>> http://IP_1:80/REQUEST_LOCATION_HIDDEN", host:
>>> "HOST_HIDDEN", referrer: "REFERRER_HIDDEN"
>>>
>>> --- END ---
>>>
>>>
>>> I thought -s reload was doing graceful shutdown of
>>> connections. Is it due to the fact that nginx can not handle
>>> that when using keepalive connections? Is it a bug?
>>>
>>> I am using nginx 1.24.0 everywhere, no particular
>>>
>>>
>>> Thank you for any help.
>>>
>>>
>>> Sébastien
>>>
>>>
>>> _______________________________________________
>>> nginx mailing list
>>> nginx@nginx.org
>>> https://mailman.nginx.org/mailman/listinfo/nginx
>>
>>
>
_______________________________________________
nginx mailing list
nginx@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

Nginx prematurely closing connections when reloaded

Sébastien Rebecchi March 25, 2024 08:34AM

Re: Nginx prematurely closing connections when reloaded

Craig Hoover March 25, 2024 12:34PM

Re: Nginx prematurely closing connections when reloaded

Craig Hoover March 25, 2024 12:36PM

Re: Nginx prematurely closing connections when reloaded

Igor Ippolitov March 25, 2024 01:00PM

Re: Nginx prematurely closing connections when reloaded

Sébastien Rebecchi March 26, 2024 08:42AM

Re: Nginx prematurely closing connections when reloaded

Igor Ippolitov March 28, 2024 11:42AM

Re: Nginx prematurely closing connections when reloaded

Sébastien Rebecchi March 28, 2024 02:30PM

Re: Nginx prematurely closing connections when reloaded

Igor Ippolitov March 28, 2024 07:06PM

Re: Nginx prematurely closing connections when reloaded

Sébastien Rebecchi March 29, 2024 04:42AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 227
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready