Nginx 的reload,热升级以及优雅的关闭流程
一、reload流程
- 向master进程发送HUP信号(reload命令)
- master进程校验配置语法是否正确;
- master打开可能引入的新的监听端口;
- master用新的配置文件启动新的worker子进程;
- 启动新的worker子进程之后,master向老的worker子进程发送QUIT信号(优雅的退出);
- 老的子进程收到QUIT信号之后,关闭监听句柄(也就是说,新的连接只会到新的子进程),处理完当前的连接后就结束进程;
二、热升级的流程
-
将久的Nginx文件替换成新的Nginx文件(注意备份);
-
向master进程发送USR2信号;
Nginx还没有提供相应的命令行
-
之后,现有的master进程会修改pid文件名,加后缀oldbin;
这是为了给新的master进程让路;
-
老的master进程,用新的Nginx二进制文件,启动新的master进程;
此时,会出现两个master进程和老的worker进程。新的master进程会启动新