调优 worker_connections 的核心目标是让每个 Nginx worker 进程稳定处理预期并发连接,同时避免资源挤占或触发内核限制;它表示单个 worker 允许的最大文件描述符数,不等于并发请求数,需结合 ulimit、file-max、worker_rlimit_nofile 等系统限制及业务连接模型(短连/长连)合理设定,并协同优化 worker_processes、epoll、multi_accept 等参数。

调优 worker_connections 的核心目标不是盲目设高,而是让每个 Nginx worker 进程能稳定处理预期并发连接,同时不挤占系统资源或触发内核限制。
理解 worker_connections 与真实并发的关系
worker_connections 是单个 worker 进程允许打开的最大文件描述符数(包括客户端连接、上游连接、日志文件等)。它不等于“可支撑的并发请求数”,因为:
- 一个 HTTP/1.1 长连接可能复用多次请求,但只占用 1 个连接槽位;
- HTTP/2 或 gRPC 连接承载多路复用请求,仍只计为 1 个连接;
- 反向代理场景下,每个客户端连接可能对应 1 个上游连接(也可能复用),实际消耗是双向的;
- 除客户端连接外,worker 还需打开监听套接字、上游服务器 socket、临时文件、日志句柄等。
检查并匹配系统级限制
再高的 worker_connections 值若超出系统能力,会直接失败。必须同步确认:
- 运行用户(如 nginx)的
ulimit -n:建议设为 ≥worker_connections × worker_processes,且不低于 65536; - 系统全局最大文件数:
cat /proc/sys/fs/file-max,应大于所有进程文件描述符总和; - Nginx 主配置中
worker_rlimit_nofile必须 ≥worker_connections,否则启动报错; - 确保
net.core.somaxconn(如设为 65535)和net.ipv4.ip_local_port_range足够支撑短连接爆发。
结合业务特征设定合理值
大促期间连接模型变化明显,不能沿用日常配置:
- 若主要为短连接(如 H5 秒杀页频繁刷新),连接建立/断开频繁,需预留更高 buffer,
worker_connections建议 8192–16384; - 若大量使用长连接(App 端保活、WebSocket),连接数稳定但持续占用,更需关注内存和超时设置(
keepalive_timeout、keepalive_requests),worker_connections可设为 4096–8192; - 开启
reuseport(Nginx 1.9.1+)后,多个 worker 可独立监听端口,降低锁竞争,此时可适度提高worker_connections,但需验证 CPU 和中断分布是否均衡; - 通过
nginx -T | grep worker_connections和ss -s实时观察 ESTAB 连接数,压测时目标值应控制在配置值的 70% 以内,留出余量应对毛刺。
配套关键参数不可忽略
单独调高 worker_connections 效果有限,必须协同优化:
-
worker_processes auto;:优先设为 CPU 核心数,避免过多 worker 争抢 CPU; -
use epoll;(Linux 下默认):确保使用高效事件模型; -
multi_accept on;:让每个 worker 尽可能一次接受多个新连接,减少惊群; -
reset_timedout_connection on;:及时释放异常僵死连接,防止耗尽连接槽; - 配合
limit_conn按 key(如 $binary_remote_addr)限流,防止单 IP 占满连接池。

















