Nginx是一个多进程程序,进程之间进行通讯可以使用共享内存和信号等。做进程管理时,只能使用信号。
能够接受命令的有三者:
Master进程
Work进程
nginx命令行
Master进程
可以监控Worker进程发来的CHLD
信号。
管理worker进程可以接受的命令:
TERM
和INT
可以立刻关闭进程;
QUIT
可以优雅地关闭进程,不要给用户发送立刻结束的报文,比如RST
;
HUP
表示重新载入配置文件;
USER1
能够打开日志,并且切割日志文件;
USR2
平滑升级,会重新开启对应的Master
进程和Worker
进程,整个系统中将会有两个master进程,并且新的master进程的PID会被记录在nginx.pid
文件,而之前的旧的master进程PID会被记录在nginx.pid.oldbin
文件中,接着再次发送QUIT信号给旧的master进程,让其处理完请求后再进行关闭;
WINCH
只会关闭Worker
进程。
Worker进程
Worker
能够接收到的信号:TERM
和INT
可以立刻关闭进程;QUIT
可以优雅地关闭进程; USR1
重新打开日志文件; WINCH
关闭Worker
进程。
nginx命令行
reload
相当于HUP
;
reopen
相当于USR1
;
stop
相当于TERM
;
quit
相当于QUIT
。
此文章为10月Day 29学习笔记,内容来源于极客时间《Nginx 核心知识 150 讲》