今天这篇文章主要来介绍下 Nginx 的 reload 流程。实际上在之前文章中,在更改了 nginx 配置文件时,我们都会执行 nginx -s reload 命令,我们执行这条命令的原因是希望 nginx 不停止服务始终在处理新的请求的同时把 nginx 的配置文件平滑的把旧的 nginx.conf 配置更新为新的 nginx.conf 配置。
这样一个功能对于 nginx 非常有必要,但是有时候我们会发现在执行 nginx -s reload
命令后,worker 子进程的数量会变多了,这是因为老的配置运行的 worker 进程长时间没有退出,当使用 stream 做四层反向代理的时候,可能这种场景会更多。
那么下面我们通过分析 nginx 的 reload 流程,来探究下 nginx 到底做了些什么?所谓优雅的退出和立即退出有什么区别?
1|0reload 流程
第一步在修改好 nginx 的配置文件 nginx.conf 后,向 master 进程发送 HUP 信号,这实际上和我们在命令行执行 nginx -s reload
命令效果是一样的。
那么 master 进程在收到 HUP