worker_connections指令定义单个worker进程最大并发连接数,需与系统文件描述符限制(ulimit、worker_rlimit_nofile、fs.file-max)匹配,理论总并发量为worker_processes×worker_connections。

在 Nginx 的 events 块中,设置每个 worker 进程最大连接数,靠的是 worker_connections 指令。
worker_connections 是核心参数
它直接定义单个 worker 进程能同时处理的客户端连接总数(含活跃请求和 keepalive 空闲连接)。例如:
events {
worker_connections 4096;
}
这表示每个 worker 进程最多维持 4096 个并发连接。
必须匹配系统资源限制
这个值不能随意设高,否则 Nginx 启动失败或运行中报错(如 “too many open files”)。需同步调整以下三处:
- 操作系统级每进程文件描述符上限:用
ulimit -n查看,通过/etc/security/limits.conf永久提升(如* soft nofile 65535) - Nginx 主配置中声明全局文件描述符限额:
worker_rlimit_nofile 65535;(放在 events 外、http 上方) - 确保系统总句柄数足够:
cat /proc/sys/fs/file-max,必要时调大(sysctl -w fs.file-max=1048576)
实际并发能力要看乘积
Nginx 理论最大并发连接数 = worker_processes × worker_connections。比如:
-
worker_processes 4;+worker_connections 8192;→ 最多支撑约 32768 并发连接 - 但后端服务(如 PHP-FPM、上游代理)也会占用连接,生产环境建议预留 20%~50% 余量
其他相关参数建议配合使用
虽然不直接控制“每个进程连接数”,但影响连接处理效率和稳定性:
-
use epoll;:Linux 下显式启用高性能事件模型(默认通常已自动选中) -
accept_mutex on;:避免“惊群”,让新连接更均衡地分发到各 worker -
multi_accept on;:允许单个 worker 一次接收多个就绪连接,提升吞吐











