Nginx 中 Master Process 如何实现主从进程协作

夜丽大大_3736

夜丽大大_3736

2026-07-06

836人浏览

原创

nginx master进程不处理请求,仅负责配置校验、创建监听套接字、fork worker进程,并通过信号机制(sighup/sigquit/sigusr1/sigusr2)协调worker;worker继承监听句柄、以降权运行、专注i/o与业务,借助accept_mutex避免惊群,日志由master统一落盘,worker异常时master自动重启新进程保障服务连续性。

nginx 中 master process 如何实现主从进程协作

Nginx 的 Master Process 本身不处理请求,它的存在是为了让多个 Worker 进程能稳定、高效、安全地协同工作。这种协作不是靠复杂通信,而是靠轻量、明确的分工与约定好的信号机制实现的。

Master 负责“建好舞台”,Worker 负责“上台演出”

Master 启动时就完成三件关键准备动作:校验配置、创建监听套接字(bind + listen)、按 worker_processes 数量 fork 出 Worker 进程。所有 Worker 都继承或共享这些已就绪的监听句柄——它们一启动就能直接 accept 新连接,无需重复初始化。

这意味着:

  • Worker 不需要自己解析配置,也不用抢着 bind 端口,避免冲突和重复开销
  • Master 始终持有 root 权限,而 Worker 以普通用户(如 www-data)运行,降低安全风险
  • 监听套接字由 Master 统一管理,Worker 只专注 I/O 多路复用和业务逻辑

信号驱动,各司其职不越界

Master 和 Worker 之间不共享内存做状态同步,也不用 socket 或消息队列通信,而是通过 Unix 信号达成默契:

  • SIGHUP:发给 Master,触发配置重载流程;Master 启动新 Worker,再通知旧 Worker 优雅退出
  • SIGQUIT:可发给 Master(优雅关机)或 Worker(单独退出),Worker 收到后不再接受新连接,处理完存量请求后自行终止
  • SIGUSR1:发给 Master,让它重新打开 access/error 日志文件(常用于日志轮转)
  • SIGUSR2:配合二进制升级,Master 启动新版本进程,逐步切换流量

每个信号含义固定,Worker 不会响应 SIGHUP,Master 也不会响应 SIGQUIT —— 协作建立在角色隔离基础上。

Nginx Hosting
Nginx Hosting

通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。

下载

连接分发与资源协调靠“软约束”,不是硬锁

为防止多个 Worker 同时被唤醒争抢 accept(即“惊群”),Nginx 默认启用 accept_mutex on。但这不是传统互斥锁,而是 Master 在内核事件循环中做一次原子判断:只允许一个 Worker 尝试 accept,其余等待下一轮事件就绪。

日志写入也体现分层思想:Worker 把日志内容写入 pipe 或共享内存区,由 Master 统一落盘。这样既避免多进程并发刷磁盘,又保证日志顺序性和一致性。

故障隔离与自动恢复是协作的底线保障

Master 持续监听 SIGCHLD 信号,一旦某个 Worker 异常退出,立刻 fork 一个新的补上,保持 worker_processes 数量恒定。而 Worker 崩溃不会中断已有连接——那些连接仍在其他正常 Worker 中继续处理,用户无感知。

这种设计让系统具备天然容错能力:Master 是单点但极轻量,Worker 是多实例但彼此独立。只要 Master 还在,整个服务就能持续运转并自我修复。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

nginx

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

920

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2872

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

956

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

869

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2616

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4872

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

767

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习