worker_connections是nginx单个worker进程能处理的最大并发连接数,直接影响直播场景下的观众承载量;其实际生效需与系统文件描述符限制、epoll事件模型、内核参数及rtmp模块配置(如max_connections)协同优化,否则将触发“too many open files”错误。

worker_connections 是 Nginx 事件模型中决定单个 worker 进程能同时处理多少并发连接的关键参数。在视频直播流转发场景(如 RTMP 推拉流、HTTP-FLV 分发)中,它直接影响服务器能承载的并发观众数和流路数——但仅调大它并不等于自动获得“超大带宽通道”,需结合系统资源、网络栈、RTMP 模块行为与实际流量模型综合配置。
一、理解 worker_connections 在直播中的真实作用
- 它限制的是 文件描述符(FD)数量上限,不是带宽本身;
- 每路 RTMP 推流 ≈ 1 个连接(publish),每路 HTTP-FLV 播放 ≈ 1 个长连接(play),HLS 则是短连接(不计入此限);
- 实际并发连接数 =
worker_processes × worker_connections; - 若单台服务器需支撑 5000 路 HTTP-FLV 观众 + 20 路推流,理论需至少
5020连接;设worker_processes auto(通常为 CPU 核数),则worker_connections至少设为5020 ÷ CPU核数(如 8 核 → ≥630)。
二、必须同步调整的底层依赖项
单纯改 worker_connections 会因系统限制而失效,以下三者必须匹配:
-
系统级文件描述符限制
编辑/etc/security/limits.conf:nginx soft nofile 65536 nginx hard nofile 65536 * soft nofile 65536 * hard nofile 65536
并确保
systemd启动时加载(如修改/etc/systemd/system/nginx.service中LimitNOFILE=65536)。 -
Nginx 主配置中启用高效事件模型
events { use epoll; # Linux 必选,比 select/poll 高效 worker_connections 8192; multi_accept on; # 让 worker 尽快收完就绪连接,减少排队 } -
内核网络参数优化(针对长连接+高吞吐)
# 减少 TIME_WAIT 占用(直播连接频繁断连重连时关键) net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 # 提升连接队列与缓冲区 net.core.somaxconn = 65535 net.core.netdev_max_backlog = 5000 net.ipv4.tcp_rmem = 4096 65536 8388608 net.ipv4.tcp_wmem = 4096 65536 8388608
三、RTMP 模块下的特殊注意事项
Nginx-RTMP 模块对连接管理有额外逻辑:
-
rtmp_auto_push on会为每个 application 自动创建内部 worker 连接,占用额外 FD; -
live on模式下,每路流默认允许无限观众,但每个观众都独占一个连接; - 若开启 HLS 输出(
hls on),每个.ts片段请求是短连接,不计入worker_connections,但会快速消耗accept()频率,需配合multi_accept on和epoll; - 建议显式限制单流最大观众数,防止单流耗尽全部连接:
application live { live on; max_connections 2000; # 单应用最多 2000 观众连接 allow play all; }
四、验证与压测建议
启动后检查实际生效值:
nginx -t && nginx -s reload后执行ps -eo pid,comm,nlwp | grep nginx看 worker 进程线程数,再用lsof -p <worker_pid> | wc -l</worker_pid>查当前打开 FD 数。-
使用
wrk或专用工具(如srs-bench)模拟 HTTP-FLV 长连接:wrk -c 10000 -d 300s --timeout 30s http://your-domain/live/test.flv
观察 Nginx error log 是否出现
* * * worker process XXX exited on signal 9(OOM)或accept() failed (24: Too many open files)。 监控指标重点看:
nginx_stub_status中的Active connections、Reading/Writing/Waiting;
系统ss -s中total与tcp连接数是否接近worker_connections × worker_processes。
合理设置 worker_connections 是构建高并发直播分发能力的基础一环,但它的效能完全依赖于系统层、内核层和 Nginx 模块层的协同。没有孤立的“调大即有效”,只有逐层对齐、实测验证后的稳定通道。










