Nginx是大型架构核心,下面我详解Nginx惊群效应@mikechen
Nginx惊群效应
惊群效应, 是高并发编程中一个著名的现象。

指的是当多个进程或线程在等待同一事件时,事件发生后,所有等待者(或大部分)都被唤醒。
但最终只有一个进程或线程能成功处理该事件,而其他被唤醒的进程或线程又会立即进入休眠状态。
对于 Nginx 来说,惊群效应主要发生在 新连接到达 时。
为什么会出现惊群效应
主要原因只有一个:
多个 worker 同时监听同一个端口,争抢 accept 新连接。

在高并发短连接场景下:
连接建立非常频繁,每次新连接都会触发多个 worker 被唤醒;
但最终只会有一个成功 accept。
惊群效应解决方案
1️⃣ accept_mutex(通用方案)
worker 之间加锁,同一时刻只允许一个 worker accept 连接
accept_mutex on;
2️⃣ reuseport(最优方案)
每个 worker 独立监听端口
内核态分发连接,彻底避免竞争
listen 80 reuseport;
3️⃣ multi_accept(辅助优化)
worker 一次 accept 多个连接
减少唤醒次数
multi_accept on;
4️⃣ 减少连接建立(根本方案)
启用 KeepAlive
upstream 连接复用
keepalive_timeout 60;
mikechen睿哥
10年+一线大厂架构实战专家,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。