worker_connections必须与系统资源、内核参数及Nginx自身限制形成闭环,否则触发“Too many open files”或连接静默拒绝;须置于events块内,同步对齐三层fd限制(file-max、limits.conf、worker_rlimit_nofile),按业务类型设合理值(短连4096–16384、长连2048–8192、HTTPS不超ulimit的70%–80%),并配套use epoll;、multi_accept on;等events参数。

worker_connections 不是单独调大的数字,它必须和系统资源、内核参数、Nginx 自身限制形成闭环,否则只会触发 “Too many open files” 错误或连接静默拒绝。
必须放在 events 块内
该指令只能写在 nginx.conf 的 events { } 块中。写错位置(比如 http 或 server 块)会导致 Nginx 启动失败或配置不生效。常见正确写法:
- events {
- worker_connections 8192;
- use epoll;
- multi_accept on;
- }
三层文件描述符限制必须对齐
每个 TCP 连接至少占用 1 个文件描述符(fd),而 worker_connections 的实际效果取决于以下三者的最小值:
- 系统级总上限:/proc/sys/fs/file-max,建议设为 worker_processes × worker_connections × 1.3~1.5,预留日志、SSL 缓存、TIME_WAIT 等开销
-
用户级限制:在 /etc/security/limits.conf 中为 Nginx 运行用户(如 nginx 或 www-data)设置:
nginx soft nofile 65536
nginx hard nofile 65536
若使用 systemd,还需在 /etc/systemd/system/nginx.service 中添加 LimitNOFILE=65536 并执行 systemctl daemon-reload - 进程级声明:在 nginx.conf 主块(events 外、http 前)添加 worker_rlimit_nofile 65536;,该值应 ≥ worker_connections,推荐设为相同或略高(如 1.2 倍)
需匹配业务连接模式设值
数值不是越大越好——过高会加剧内存压力(每个连接约占用几 KB)、上下文切换开销,甚至触发内核瓶颈:
- 高频短连接(如 H5 秒杀页、CDN 回源、API 接口):设 4096–16384,配合 keepalive_timeout 0 或 15–30s,启用 net.ipv4.tcp_tw_reuse = 1
- 长连接保活型(如 WebSocket、HTTP/2 上报、直播 HTTP-FLV):设 2048–8192,重点保障 fd 资源充足,keepalive_timeout 控制在 15–75s 之间
- HTTPS 反向代理:除 socket 外还需 SSL session cache、OCSP stapling、证书读取等额外 fd,建议 worker_connections 不超过单进程 ulimit 的 70%~80%
配套 events 参数不可省略
只改 worker_connections 几乎无效,必须同步启用高效事件机制:
- use epoll;:Linux 下必须显式指定,避免回退到 select/poll 的 1024 硬限制
- multi_accept on;:让一个 worker 在一次事件循环中尽可能多地 accept 新连接,缓解突发流量排队
- accept_mutex on;:默认开启,防止多个 worker 同时争抢新连接导致“惊群”;高并发且启用 reuseport 时可考虑关闭以提升吞吐
- listen 指令可加 backlog 参数(如 listen 80 backlog=65535;),但不能超过内核 net.core.somaxconn 值(建议统一设为 65535)


















