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 <iippoli...@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

Reply via email to