nginx worker_connections 默认1024,实际并发能力取决于系统文件描述符限制、nginx配置及内核参数协同调优,需同步修改worker_connections、worker_rlimit_nofile、sysctl.conf、limits.conf及systemd配置。

Nginx 的 worker_connections 默认值是 1024,它表示每个 worker 进程最多能同时处理的活跃连接数。但这个数字只是“上限标尺”,实际能撑住多少连接,取决于系统文件描述符限制、Nginx 自身配置和内核网络队列是否同步放开——单改这个值基本无效。
确认并修改 nginx.conf 中的 worker_connections
该参数必须写在 events { } 块内:
- 打开
/etc/nginx/nginx.conf,找到或新建events块 - 设一个合理值,例如:
worker_connections 8192; - 保存后执行
nginx -t检查语法,再用nginx -s reload生效
必须同步放开三层文件描述符限制
每条 TCP 连接至少占用 1 个文件描述符(fd),而 Linux 默认单进程最多打开 1024 个 fd。若不打通以下三层,Nginx 启动时会静默降级,甚至报 accept() failed (24: Too many open files):
-
系统总上限:编辑
/etc/sysctl.conf,添加fs.file-max = 2000000,运行sysctl -p生效 -
用户级限制:在
/etc/security/limits.conf中为 Nginx 用户(如www-data或nginx)添加:
www-data soft nofile 65536
www-data hard nofile 65536 -
Nginx 进程级声明:在
nginx.conf主块(events外、http前)添加:worker_rlimit_nofile 65536;,该值应 ≥worker_connections × worker_processes
配套调优内核与 events 参数
光有连接容量还不够,得让连接快速进得来、分得匀、复用稳:
- 在
/etc/sysctl.conf中增强入口队列:net.core.somaxconn = 65535(防止 Connection refused) - 确保
events块中启用关键机制:
use epoll;
multi_accept on;
accept_mutex on; - 若使用 systemd 管理,还需在
/etc/systemd/system/nginx.service.d/override.conf中添加:
[Service]
LimitNOFILE=65536,然后执行systemctl daemon-reload && systemctl restart nginx
按业务类型设合理值,不是越大越好
盲目堆高反而浪费内存、加剧上下文切换,还可能触发资源争抢:
-
短连接密集型(如 API 网关、H5 秒杀页):建议 4096–16384,配合
keepalive_timeout 5–15 -
长连接保活型(如 WebSocket、HTTP/2 上报):建议 32768–65535,重点保障
worker_rlimit_nofile和file-max充足 - HTTPS 反向代理:需额外开销(SSL session cache、OCSP stapling 等),建议不超过单进程 ulimit 的 70%~80%











