Nginx高并发能力源于Master与Worker的分工协作:Master作为轻量级调度中枢,负责配置校验、进程管理与信号处理;Worker以单线程事件驱动模型高效处理连接,通过epoll/kqueue实现高吞吐;二者通过accept_mutex、共享内存和信号机制协同工作,配合合理配置(如worker_processes auto、worker_rlimit_nofile等)可充分发挥性能。

理解Nginx的高并发能力,关键不在于堆参数或调内核,而在于看清Master与Worker如何分工协作——一个管全局、一个干实事,彼此隔离又高效联动。
Master进程:轻量级“调度中枢”,专注稳定性
Master进程以root权限启动,但自身完全不处理网络请求。它只做四件事:校验配置并初始化监听套接字(如0.0.0.0:80)、按worker_processes数量fork出Worker进程、持续监控Worker存活状态、接收并分发信号(如HUP重载、USR1切日志)。它的生命周期几乎全在sigsuspend()挂起中等待信号,CPU和内存开销极低,却保障了整个服务的韧性——某个Worker崩溃,Master秒级拉起新进程,用户无感知。
Worker进程:单线程+事件驱动,专精连接处理
每个Worker是独立进程,运行在非root用户下(如user www-data;),拥有自己的内存空间和事件循环。它通过epoll(Linux)或kqueue(BSD)等IO多路复用机制,单线程并发管理成千上万连接。不创建线程、不阻塞等待、不频繁切换上下文——这正是它比传统多线程模型更省资源、更高吞吐的根本原因。例如一个Worker设置worker_connections 10240,配合4个Worker,理论支撑4万并发连接,实际反向代理场景也能稳扛2万+活跃请求。
协同机制:避免争抢、共享有序、信号驱动
多个Worker能同时监听同一端口,靠的是内核支持+Nginx控制:
- accept_mutex on(默认开启):防止“惊群”——新连接到来时,仅一个Worker尝试accept,其余挂起等待,避免CPU空转
- 共享内存:用于跨Worker统计连接数、请求数、缓存状态等,Master可读取做决策,Worker间不直接通信
- 信号通信为主:Master不主动推送指令,而是发SIGUSR1、SIGQUIT等标准信号,Worker自行响应,逻辑解耦、执行可控
配置落地:让模型真正发挥高并发优势
光懂原理不够,关键配置要对齐硬件与业务:
-
worker_processes auto;:自动匹配物理CPU核心数,避免超线程干扰;搭配worker_cpu_affinity auto;绑定核心,减少调度抖动 -
worker_rlimit_nofile 65536;:突破系统文件描述符限制,确保每个Worker能打开足够连接 -
multi_accept on;:让Worker在一次事件循环中尽可能多地accept新连接,提升瞬时吞吐 - 禁用
master_process off;:生产环境必须保留Master,否则失去热重载、优雅退出、异常自愈等可靠性能力


















