nginx热部署的原理nginx -s reload
我们执行这条命令的原因是希望 nginx 不停止服务始终在处理新的请求的同时把 nginx 的配置文件平滑的把旧的 nginx.conf 配置更新为新的 nginx.conf 配置。
这样一个功能对于 nginx 非常有必要,但是有时候我们会发现在执行 nginx -s reload 命令后,worker 子进程的数量会变多了,这是因为老的配置运行的 worker 进程长时间没有退出,当使用 stream 做四层反向代理的时候,可能这种场景会更多。
nginx reload流程
- (1)向 master 进程发送 hup 信号(reload命令)
- (2)master 进程校验配置文件语法是否正确
- (3)master 进程打开新的监听端口
- (4)master 进程用新配置启动新的 worker 子进程
- (5)master 进程向老 worker 子进程发送 quit 信号
- (6)老 worker 进程关闭监听句柄,处理完当前连接后结束进程
reload nginx可以两种方式
(1)./nginx -s reload
(2)kill -hup masterpid 即 kill -hup `cat /opt/ngx/logs/nginx.pid`
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论