Master process on reload

Maxim Dounin mdounin at mdounin.ru
Wed Jun 29 17:38:44 UTC 2016


Hello!

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

> Kind of basic question about nginx behavior here.
> 
> On the docs page http://nginx.org/en/docs/control.html, 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)?

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 Dounin
http://nginx.org/



More information about the nginx mailing list