Master process on reload

Hello,

Kind of basic question about nginx behavior here.

On the docs page Controlling nginx, it is said :

HUP → changing configuration, keeping up with a changed time zone (only
for FreeBSD and Linux), starting new worker processes with a new
configuration, graceful shutdown of old worker processes

This is exact since the HUP signal is used to reload configuration and
spawn new workers with it.

However, a little bit further on the same page, in the on-the-fly
upgrade
section, you got:

Send the HUP signal to the old master process. The old master process will
start new worker processes without re-reading the configuration. After
that, all new processes can be shut down gracefully, by sending the QUIT
signal to the new master process.

Is this behavior due to the USR2 signal previously sent, the old master
knowing it is the old one (and thus knowing it should avoid loading an
improper configuration suitable for another version)?

B. R.

Hello!

On Wed, Jun 29, 2016 at 07:04:48PM +0200, B.R. wrote:

improper configuration suitable for another version)?
Yes. The old master knows it previously started a new master,
and on the HUP signal it just starts new workers (if the new
master is still running). If/when the old master exits, the old
master is notified about this, and starts to work normally.

Additional details can be found in
src/os/unix/ngx_process_cycle.c:

http://hg.nginx.org/nginx/file/tip/src/os/unix/ngx_process_cycle.c#l220


Maxim D.
http://nginx.org/

Thanks Maxim!
Helpful and concise as always. :o)

B. R.