master工作流程图
master进程不需要处理网络事件,它不负责业务的执行,只会通过管理worker等子进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。
它会通过检查一下7个标志位来决定ngx_master_process_cycle函数的运行(和worker检查4个标志位是差不多的):
1. sig_atomic ngx_reap;
2. sig_atomic ngx_terminate;
3. sig_atomic ngx_quit;
4. sig_atomic ngx_reconfigure;
5. sig_atomic ngx_reopen;
6. sig_atomic ngx_change_binary;
7. sig_atomic ngx_noaccept;
8. ngx_uint_t ngx_restart; //这个不是信号
信号的意义
信号 | 对应进程中的全局标志变量 | 意义 |
---|---|---|
QUIT | ngx_quit | 优雅地关闭整个服务 |
TERM或者INT | ngx_terminate | 强制关闭整个服务 |
USR1 | ngx_reopen | 重新打开服务中的所有文件 |
WINCH | ngx_noaccept | 所有子进程不再接受处理新的连接,相当于对所有子进程发送QUIT信号 |
USR2 | ngx_change_binary | 平滑升级到新版本Nginx程序 |
HUP | ngx_reconfigure | 重新读取配置文件是服务对新配置项生效 |
CHILD | ngx_reap | 有子进程意外结束,这时需要监控所有的子进程,也就是ngx_reap_children做的工作 |