Nginx 进程模型概述
简单总结如下:
1. 区分为 master/worker 两类进程
2. worker进程监听,处理用户的请求,并返回
3. master进程用于监控worker进程的状态,会拉起意外关闭的worker进程
4. master进程同时接收用户的命令/信号(比如 reload, stop),并将命令分发给子进程
nginx控制指令
如上,由于master是所有控制nginx指令的入口,因此只要将指令发给master进程,就能达到控制nginx的目的。
正常情况下,我们会通过./sbin/nginx -s reload此类的命令重启nginx等,
其实只要明白所有的指令最后都是转化成一个信号发个master进程,我们完成可以通过发信号给master进程来达到控制nginx的目的。
信号 nginx命令 说明
Hup -s reload 重启nginx
Term/int -s quit 快速关闭nginx
Quit -s stop 从容关闭nginx
user1 -s reopen 重新打开日志文件
user2 - 平滑升级可执行程序
winch - 从容关闭工作进程
考虑一个情况,当一个进程的nginx.pid 文件丢失了,
如果关闭nginx?额, killall -9 nginx太简单粗暴了,
一个技巧就是 ps aux | grep "nginx: master",
找到对应进程的pid,然后kill -QUIT nginx.master.pid 即可!
网友评论