nginx的工作流程
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模型
、
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏