单机最大并发连接数需综合系统资源、Nginx工作模式及OS限制调优;worker_connections表示每个worker进程的最大活跃连接数,理论值=worker_processes×worker_connections,但须≤0.9×ulimit -n以预留fd余量。

单机最大并发连接数不是简单把 worker_connections 设得越高越好,而是要结合系统资源、Nginx 工作模式、后端处理能力以及操作系统限制综合计算和调整。
理解 worker_connections 的实际作用
worker_connections 表示每个 worker 进程最多能同时处理的**活跃连接数**(包括客户端连接、上游连接、长连接等),不是仅指 HTTP 请求。它的上限受制于:
- Nginx 配置中的
worker_processes数量 - Linux 系统级文件描述符限制(
ulimit -n) - 内存消耗(每个连接约占用几 KB 内存)
- CPU 核心数与 worker 进程是否匹配
计算理论最大并发连接数
公式为:max_connections = worker_processes × worker_connections
但该值必须 ≤ 系统允许打开的最大文件描述符数(ulimit -n)。例如:
- 设置
worker_processes auto;(通常等于 CPU 核心数,比如 4) - 设置
worker_connections 10240; - 则理论值为 4 × 10240 = 40960
- 但若
ulimit -n只有 65536,还需预留部分 fd 给日志、临时文件等,建议保留至少 10% 余量
因此实际可设的 worker_connections 应满足:worker_processes × worker_connections ≤ 0.9 × ulimit -n
检查并调高系统级限制
直接修改 Nginx 配置前,先确认并提升系统限制:
- 查看当前限制:
ulimit -n - 临时提高(当前会话):
ulimit -n 65536 - 永久生效需编辑
/etc/security/limits.conf,添加:
nginx hard nofile 65536
* soft nofile 65536
* hard nofile 65536
再确保 systemd 服务未覆盖限制:在 /etc/systemd/system/nginx.service.d/override.conf 中加入:
LimitNOFILE=65536
结合业务特征合理设置
并非所有连接都长期活跃。例如:
- 短连接 API 服务:连接生命周期短,可适当提高
worker_connections(如 8192–16384) - 长连接(WebSocket、gRPC 流式响应):每个连接持续占用资源,应保守设置(如 2048–4096),并配合
keepalive_timeout控制空闲时长 - 静态文件服务:IO 密集型,更依赖磁盘和缓存,连接数不是瓶颈,重点优化
sendfile和tcp_nopush
建议上线前用 ab 或 wrk 压测验证:观察 ss -s 中 total: 连接数、Nginx 监控指标(Active connections)、以及系统负载(top、vmstat)是否平稳。

















