当前位置: 首页 > news >正文

Nginx源码学习:Nginx的“内部电话系统“,Master如何用5条命令指挥Worker

一、Master和Worker之间需要一条"电话线"

Nginx的进程模型是一个Master带一堆Worker。Master负责管理——读配置、fork子进程、监听信号、热升级;Worker负责干活——accept连接、处理请求、发送响应。分工很清晰,但带来一个直接的问题:Master怎么告诉Worker该干嘛?

最直觉的答案是Unix信号。Master用kill()给Worker发个SIGQUIT,Worker收到后优雅退出。Nginx确实也这么干了。但信号有个致命短板:它只能传递一个信号编号,不能传数据。

考虑这个场景:Master fork出一个新Worker进程,现有的Worker需要知道"有个新兄弟来了,它的PID是多少,它的通信端口是什么"。这种结构化数据,光靠一个信号编号搞不定。

再看一个更硬核的场景:Nginx需要在进程间传递文件描述符。你可能会想——fd不就是个整数吗,传过去不就完了?问题在于文件描述符是进程私有的。进程A的fd 7和进程B的fd 7可能指向完全不同的内核对象。要让进程B拿到和进程A"同一个"文件描述符,必须用Unix域套接字的SCM_RIGHTS辅助消息机制——这是操作系统提供的一种特殊能力,能把一个进程的文件描述符"复制"到另一个进程的文件描述符表中,让两个进程共享同一个底层socket endpoint。

所以Nginx设计了一套基于socketpair的进程间通信机制,源码集中在ngx_channel.h(35行)和ngx_channel.c(254行)。加上ngx_proce

http://www.jsqmd.com/news/358003/

相关文章:

  • Qwen3-VL推理中断怎么办?稳定性优化部署教程提升成功率
  • 2025年AI开发入门必看:Qwen2.5-7B开源模型实战教程
  • 救命神器 9个AI论文写作软件测评:研究生毕业论文+开题报告高效写作指南
  • 2026年有专业团队的家装电线厂家推荐,口碑好的有哪些 - 工业设备
  • GLM-4-9B-Chat-1M在数学建模竞赛中的应用:美赛实战
  • 3D Face HRN模型在STM32CubeMX环境下的边缘计算应用
  • 互联网教育平台如何优化Word公式在移动端的显示?
  • 开题卡住了?千笔ai写作,本科生论文救星
  • DeerFlow开源镜像优势:免配置快速接入AI研究生态
  • EagleEye镜像免配置优势解析:Docker一键运行DAMO-YOLO TinyNAS实测
  • 横评后发现!千笔写作工具,继续教育论文神器
  • LightOnOCR-2-1B在计算机网络监控中的应用:日志文件自动分析
  • go定时任务使用xxl-job?
  • 双馈永磁风电机组与永磁同步机并网仿真模型:开启风电仿真新体验
  • GLM-Image多场景落地:短视频封面生成、小红书配图、微信公众号头图案例
  • 如何利用jQuery实现大文件的分片上传和断点续传?
  • 基于大模型技术的春联生成模型架构解析
  • Qwen-Image-Edit衍生模型AnythingtoRealCharacters2511参数详解与提示词优化指南
  • IndexTTS-2-LLM工具推荐:最适合开发者的TTS镜像
  • Ollama部署本地大模型|translategemma-12b-it技术文档截图翻译效果展示
  • Qwen2-VL-2B-Instruct快速部署:Docker镜像免配置方案(附requirements.txt)
  • BHH德耀真营养原装实力品牌排名情况如何 - 工业设备
  • Qwen3-ASR-0.6B数据库集成:MySQL语音日志分析平台
  • PowerPaint-V1镜像免配置亮点:一键启动含日志监控+错误自动重试机制
  • nomic-embed-text-v2-moe效果展示:法律条文中英文条款语义等价性验证
  • Pi0机器人控制中心镜像免配置:Docker一键拉起Gradio Web终端
  • 2026年伸缩悬臂货架口碑好的品牌推荐排名 - myqiye
  • 从零开始部署LongCat-Image-Edit V2:Linux环境保姆级教程
  • Qwen-Image-2512-SDNQ Web服务效果实测:复杂材质(丝绸/金属/玻璃)反射表现
  • 开源可部署|translategemma-27b-it支持中文→阿拉伯语/希伯来语等RTL语言翻译