要让Nginx稳定支撑1万至100万并发连接,必须协同配置worker_processes、worker_connections、系统文件描述符限制及epoll事件模型;单独调高worker_connections会导致启动失败或静默降级。

要让 Nginx 稳定支撑从 1 万到 100 万并发连接,不能只调 worker_connections,必须把它和 worker_processes、系统文件描述符限制、事件模型一起配平。它只是并发能力公式里的一个因子,单独设高反而会启动失败或静默降级。
1 万并发:中小业务稳态起步
适合 4 核 CPU、8GB 内存的常规服务器,目标是可靠扛住日常峰值流量,不追求极限压测。
- worker_processes 4(匹配 CPU 核数)
- worker_connections 2500 → 理论总连接 = 4 × 2500 = 10000
- worker_rlimit_nofile 16384(≥ 1.2 × 总连接,留出日志、缓存等冗余)
- 系统 ulimit -n 至少设为 16384(写入 /etc/security/limits.conf)
- events 块中启用 use epoll; multi_accept on;
3–5 万并发:通用生产推荐值
这是多数中大型 Web 服务的实际承载区间,兼顾性能、稳定与可维护性,无需过度调优。
- worker_processes auto(自动识别 CPU 核数,如 8 核则启 8 进程)
- worker_connections 65535(单进程上限,实际并发由乘积决定)
- worker_rlimit_nofile 1048576(覆盖高并发冗余,也适配后续扩容)
- 系统级需同步配置:fs.file-max = 2000000(/etc/sysctl.conf)、* soft/hard nofile 1048576(/etc/security/limits.conf)
- 务必开启 accept_mutex off(高并发下减少锁竞争)
50–100 万并发:长连接型场景专用配置
适用于 IoT 接入、WebSocket 服务、消息推送等大量空闲连接挂载的场景。此时内存和内核参数比 CPU 更关键。
- 仍用 worker_processes auto,但建议搭配 worker_cpu_affinity auto(NUMA 架构下提升缓存命中)
- worker_connections 可维持 65535 不变,重点提升总容量靠增加进程数(如 16 核配 16 进程)
- keepalive_timeout 15–30(缩短空闲连接驻留时间,加快连接周转)
- keepalive_requests 1000–5000(避免单连接请求过多导致资源长期占用)
- 内核需强化:net.core.somaxconn = 65535、net.ipv4.tcp_max_syn_backlog = 65535、net.ipv4.ip_local_port_range = "1024 65535"
绕不开的系统层配合
Nginx 参数再合理,系统没放开限制就是白搭。以下三项必须同步生效:
- /etc/security/limits.conf 中设置用户级 nofile 限制(如 nginx 用户或 *)
- /etc/sysctl.conf 中调大内核文件句柄总量(fs.file-max)和 TCP 队列参数
- 若运行在 Docker 中,启动容器时必须加 --ulimit nofile=1048576:1048576,宿主机配置对容器无效


















