nginx的工作流程

本文深入探讨了Nginx的进程结构,包括master、worker、cachemagager和cacheloader进程的角色与职责,以及多进程而非多线程的设计哲学。详细解析了事件驱动模型下worker进程与CPU的绑定策略,信号管理机制,热升级流程,以及epoll模型在Nginx事件循环中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nginx请求处理流程

 

nginx进程结构

master进程:是作为worker进程管理的

worker进程:处理真正的请求的而master进程则是管控这些进程的工作方式的;缓存是在多个worker进程共享数据的;进程间通信使用共享内存解决的,请求使用的缓存有worker管控的

cache magager进程 :缓存管理

cache loader 进程:缓存载入

nginx设计的哲学理念:为什么多进程而非多线程;因为线程之间是共享同一个进程空间的,当第三方模块出现异常时会导致nginx挂掉,而多进程就不会出现这样的问题

为什么worker进程会很多:因为nginx采用事件驱动的模型,它希望每个worker进程从头到尾占用一颗cpu,往往把worker进程数量配置根worker进程一致以外,还需要把每个worker进程与CPU绑定在一起,这样可以更好使用每个cpu上的CPU缓存,来减少缓存失效命中率。

 nginx进程间的信号管理

reload流程

1.向master进程发送HUP信号(reload)

2.maseer 进程校验配置语法是否正确

3.master进程打开新监听的端口

4.master进程用新配置启动worker子进程

5.master进程向老worker子进程发送quit信号

6.老worker进程关闭监听句柄,并处理完当前连接后退出结束进程

 

 热升级完整流程

1.将就的nginx文件缓存新的nginx文件。注意备份,及编译新版本nginx指定的路径要与就版本中一致

2.向master进程发送USR2信号

3.master进程会自己修改PID文件名,加后缀.oldbm

4.master进程用新的NGINX文件启动新的master进程

5.向老master进程发送quit信号,关闭老master进程;但老的master进程会保存下来

6.回滚:向老的master发送HUP,向新master发送QUIT信号

流程图

针对HTTP请求优雅关闭work进程,如果设置了超时时间有一些连接会立即停止

网络收发与nginx的事件对应关系;一个网络连接对应两个事件一个读事件一个写事件

网络传输中的报文

TCP协议与非阻塞接口

nginx事件循环

 

epoll模型

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/rdchenxi/p/10977063.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值