文章目录
- 图解reload流程
- 1.向master程发送HUP号( reload命令)
- 2.master进程校验配置语法是否正确
- 3.master进程打开新的监听端口
- 4.master进程用新配置启动新的worker 进程
- 5.master进程向老worker 进程发送QUIT号
- 6.老worker进程关闭监听句柄,处理完当前连接后结束进程
图解reload流程
1.向master程发送HUP号( reload命令)
在高并发的场景下 , reload会造成一段时间内worker进程数量大于CPU物理核数的情况,发生CPU争抢,CPU缓存效率下降,因此在QPS或者并发连接数不变的情况下,nginx总体性能会略有下降
2.master进程校验配置语法是否正确
nginx -t检查配置文件正确与否的操作,如果语法错误,reload会中断,原worker进程仍然按照原配置项提供服务
3.master进程打开新的监听端口
在新的配置文件里,如果我们监听了新的端口,master会打开这个监听端口,以便新起的worker进程进行监听和任务处理。
子进程可以共享使用父进程已经打开的端口。 新老worker进程因为是都是同一个master进程的子进程,所以可以的。
配置文件中即使不再监听某个端口,已经建立的连接仍然可以继续处理。
4.master进程用新配置启动新的worker 进程
5.master进程向老worker 进程发送QUIT号
6.老worker进程关闭监听句柄,处理完当前连接后结束进程
关闭监听句柄 ,就是socket,也可以叫套接字,或者叫fd文件句柄