nginx进程管理
master进程通过监控worker进程有没有发送CHLD信号来监控worker进程,master可以接收一些信号来管理worker进程,比如TERM等,比如kill -USR2 pid kill -WINCH pid
worker进程也会接受这些命令,一般直接对master做命令
nginx命令行和kill效果是一样的,nginx的master pid在logs/pid.log中
nginx -s reload流程
1.worker先发送HUP信号表示自己活着
2.检测配置文件语法
3.打开配置文件中新加的端口,因为linux默认worker进程继承master的端口
4.开启worker进程,此时已继承新端口
5.退出老worker进程。quit立即退出
6.关闭老进程的监听句柄,后面结束彻底进程
当老worker结束完请求后自动退出
优雅的关闭进程
worker处理连接,直接关闭导致用户访问错误,优雅的关闭主要针对http请求
1.nginx configure中可以配置 worker shutdown timeout(添加标志位),
2.关闭监听句柄保证不会收到新的连接,为了效率最大化,nginx会建立一些空闲连接,
3.然后就是关闭空闲连接
循环通过加的标志位,在循环中,每当发现一个请求完毕,就识别请求的连接,并且关掉这个连接
当所有进程都被优雅的关闭或者达到超时时间,work进程都会立即退出