调优nginx events块并发连接数需先确保系统文件描述符足够,再合理设置worker_connections等参数并验证生效。具体包括:检查ulimit -n和fs.file-max,配置limits.conf和systemd的limitnofile;events块中设use epoll、worker_connections(如10240)、multi_accept on、accept_mutex on;主配置中设worker_processes auto、worker_rlimit_nofile≥worker_processes×worker_connections,并调整keepalive_timeout和keepalive_requests;最后nginx -t校验、-s reload生效,用ss或netstat验证连接数。

调优 Nginx events 块的并发连接数,核心是让 worker_connections 值既够用又不越界——它必须落在系统资源允许的范围内,而不是堆得越高越好。
先看系统能撑多少文件描述符
每个连接至少占用 1 个文件描述符(fd),Nginx 启动前必须确认系统允许打开的 fd 数足够:
- 运行
ulimit -n查当前用户限制(默认常为 1024) - 运行
sysctl fs.file-max查系统全局上限 - 永久放宽:在
/etc/security/limits.conf中为 nginx 用户加两行:
nginx soft nofile 65535
nginx hard nofile 65535 - 若用 systemd 启动,还需在
/etc/systemd/system/nginx.service.d/override.conf中写入:
LimitNOFILE=65535
再配 events 块关键参数
在 nginx.conf 的 events { ... } 块中,这四条最常用且需协同设置:
-
use epoll;—— Linux 必写,避免回退到低效的select或poll -
worker_connections 10240;—— 单 worker 进程连接上限;常见取值范围是 4096~65535,建议从 10240 起步,压测后再调 -
multi_accept on;—— 让 worker 一次尽可能多地收新连接,缓解突发流量压力 -
accept_mutex on;—— 默认开启,高并发短连接场景下建议保留,防“惊群”唤醒浪费 CPU
别忘了主配置里的配套项
这些不在 events 块内,但直接影响 worker_connections 是否生效:
-
worker_processes auto;或明确设为 CPU 核心数(如 4) -
worker_rlimit_nofile 65535;—— 必须 ≥worker_processes × worker_connections,否则 Nginx 启动会失败或运行时报 “too many open files” - 若启用了 keepalive,顺带调下:
keepalive_timeout 15s;和keepalive_requests 100;,避免空闲连接长期占坑
验证是否真正生效
改完别急着 reload,按顺序走三步:
- 执行
nginx -t检查语法 - 执行
nginx -s reload生效 - 观察连接承载情况:
ss -s | grep "TCP:"看当前 TCP 连接总数;netstat -an | grep :80 | wc -l粗略统计监听端口上的活跃连接











