nginx 的进程模型
主进程(Master Process):负责管理 Nginx 的工作进程,处理配置文件的加载和维护。
工作进程(Worker Processes):实际处理客户端请求,每个工作进程是独立的。
reload 过程
接收 SIGHUP 信号
主进程接收到 SIGHUP(挂起)信号,表示需要重新加载配置。
解析新配置
1. 主进程开始读取和解析新的配置文件。
2. 如果配置无误,主进程继续执行下一步;如果有错误,主进程不会影响现有的工作进程,服务依然运行。
启动新工作进程
1. 主进程根据新的配置启动新的工作进程。
2. 新工作进程能够立即开始接收新的请求。
旧工作进程的处理
1. 旧的工作进程依旧在后台运行,处理其当前正在执行的请求。
2. 一旦旧工作进程完成了所有待处理请求,即可优雅地终止自己。
无缝切换
1. 在整个过程中,新工作进程和旧工作进程同时存在,确保请求不断。
2. 当所有旧工作进程完成其工作并终止后,新的配置已经完全生效。
优雅重启优势
1. 高可用性:服务不会因为配置更新而中断,对于需要持续服务的应用尤其重要。
2. 平滑过渡:用户不会察觉到服务的中断,保证良好的用户体验。