向master进程发送HUP信号(reload命令)
在我们修改nginx.conf后,向master进程发送HUP信号,这其实和我们在nginx命令行执行nginx -s reload命令是一样的。
master进程校验配置语法是否正确
master进程收到信号以后,master进程校验配置语法是否正确,也就是说我们并不一定非要在nginx -s reload 之前先执行 -t 检验下语法是否正确,在nginx master进程一定会做这件事情。
master进程打开新的监听端口
在配置语法完全正确以后,nginx的master进程就回去打开新的监听窗口。
master进程用新配置启动新的worker子进程
master进程用新的nginx.conf配置文件启动新的worker子进程
master进程向老worker子进程发送QUIT信号
在启动新的子进程以后,再向老的worker子进程发送QUIT信号,这时候我们发现QUIT信号和TERM INT信号不一样的,QUIT信号是请优雅地关闭子进程。这时,我们要注意先后顺序,因为nginx必须要保证平滑,所以它一定要先启动新的worker子进程再向老的worker子进程发送QUIT信号。
老worker进程关闭监听句柄,处理完当前连接后结束进程
老的worker子进程收到QUIT信号以后,首先关闭监听句柄,也就是说这个时候新的连接只会到新的worker子进程,所以它们之间虽然有个时间差,但是时间是非常快速的。处理完关闭监听句柄,处理完当前连接后结束进程。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。