支撑万级并发需协同配置worker_processes与worker_connections,并确保其乘积不超过系统ulimit -n值且预留冗余;典型配置如4核设worker_processes 4、worker_connections 2500、worker_rlimit_nofile 16384,8核可设worker_processes auto、worker_connections 65535、worker_rlimit_nofile 1048576,同时启用epoll和multi_accept。

要支撑万级并发(比如 1 万到 5 万连接),worker_connections 不需要设得特别高,关键在于和 worker_processes、系统限制协同匹配。单独调大这个值没用,反而可能因资源不足导致启动失败或运行异常。
worker_connections 的真实作用
它表示每个 worker 进程最多能同时处理的客户端连接数,不是总连接数。
真正决定并发上限的是:
-
worker_processes × worker_connections - 这个乘积必须 ≤ 系统可用文件描述符总数(ulimit -n)
- 同时要留出冗余(日志、缓存、临时文件等也占 fd)
万级并发的典型配置组合
以常见 4 核或 8 核服务器为例:
-
4 核机器:
-
worker_processes 4; -
worker_connections 2500;→ 总理论连接 = 4 × 2500 = 1 万 -
worker_rlimit_nofile 16384;(建议 ≥ 1.2 × 总连接,即 ≥12288) - 系统 ulimit -n 至少设为 16384(在
/etc/security/limits.conf中配* soft nofile 16384)
-
-
8 核机器(更常用):
-
worker_processes auto;(自动识别为 8) -
worker_connections 65535;→ 理论可达 52 万,但万级场景下完全够用,且留足余量 -
worker_rlimit_nofile 1048576;(覆盖高并发冗余需求) -
use epoll;+multi_accept on;必须启用,否则 I/O 效率大幅下降
-
注意几个易错点
-
worker_connections值不能超过worker_rlimit_nofile,否则 Nginx 启动时会静默降级(比如你设了 65535,但 rlimit 只有 1024,实际就按 1024 运行) - 每个连接约占用 240–328 字节内存(不含缓冲区),1 万连接仅需约 2.5–3 MB 内存,内存通常不是瓶颈,但要避免盲目设到 65535 后忽略系统限制
- 如果用 Docker,还要确认容器启动时加了
--ulimit nofile=1048576:1048576,否则宿主机设置不生效
实际推荐起步值
- 初期压测或中小业务:
worker_connections 4096或8192配worker_processes auto,再配合ulimit -n 65536就能稳跑 3–4 万并发 - 生产环境通用稳妥值:直接设
worker_connections 65535,只要系统和 Nginx 其他参数跟上,万级到十万级都平滑支持
不复杂但容易忽略。











