监控worker进程:
子进程终止时,会向父进程发送chld信号,所以如果work进程因为一些模块出现bug,导致work进程终止掉,那么master进程可以立刻通过chld发现这样一个事件,然后重新拉起work进程
通过信号管理work进程:
TERM立刻停止
QUIT优雅的停止(可以慢慢的停,不要对用户发送立刻结束连接)
HUB重载配置文件
USR1重新打开日志文件,做日志文件的切割
调用nginx命令行发送命令,和直接发送信号效果是一样的
优雅关闭worker进程
优雅关闭是针对worker进程而言的,因为只有worker进程才是处理请求的
直接关闭连接会导致用户收到错误,优雅的关闭指ngixn的worker进程可以识别出当前连接没有正在处理请求,这个时候再把连接关闭
优雅关闭主要针对http请求
优雅关闭:
1, 配置定时器 worker_shutdown_time
设置完定时器后会加一个标志位,表示现在进入优雅的关闭这样一套流程
2, 关闭监听句柄
保证worker进程不会再去处理新的连接了
3, 关闭空闲连接
为了保证自己对资源的利用是最大化的,经常会保存一些空闲的连接,没有断开
4, 在循环中等待全部连接关闭(所有连接被优雅关闭,或达到了定时器时间被强制关闭)
5,退出进程