进程结构:一个master进程和多个子进程。
子进程分两类:一种是 Worker 进程,另一种是 Cache 相关的进程。
1、master进程
a、监控worker进程
- CHLD
因为master 进程会启动worker进程,它管理worker进程的信号首先是监控woker 进程有没有发送CHLD信号。linux 操作系统中规定,当子进程终止的时候,会向父进程发送CHLD信号。
b、管理 Worker 进程
可以通过如下信号管理worker进程.
接收信号:
- TERM,INT:立刻停止进程;
- QUIT:优雅的退出,等请求处理完才退出;
- HUP: 重载配置文件;
- USR1: 重新打开日志文件,做日志文件的切割;
- USR2: 热升级第一阶段,启动新进程。旧的 Nginx 主进程 Master 将会把自己的进程文件改名为 .oldbin,然后执行新版 Nginx。 此时新旧 Nginx 进程会同时运行,共同处理请求;
- WINCH:热升级第二阶段,停止老进程。逐步停止旧版 Nginx 的 Worker 进程就都会随着任务执行完毕而退出,新版的 Nginx 的 Worker 进程会逐渐取代旧版 Worker 进程。
注意:红色标记的只能通过kill 的linux 命令行向master 进程发送信号。如 : kill -USR2 PID
2、work进程
处理任务。
接收信号:
- TERM,INT
- QUIT
- USR1
- WINCH。
cache manager进程: 缓存管理。
cache loader进程:缓存加载。
通常不会直接对worker进程发送信号,而是通过master进程进行管理.
3、nginx命令行对应信号:
reload: HUP;
reopen: USR1;
stop: TERM;
quit: QUIT。