Nginx高性能连接维护本质是Master-Worker多进程架构与epoll事件驱动机制协同作用的结果:Worker进程数应匹配CPU物理核心数并绑定亲和性,worker_connections需结合系统文件描述符限制调优,keepalive_timeout与keepalive_requests按业务节奏精细设置以平衡复用与资源释放。

Nginx 的高性能连接维护,本质是围绕其多进程架构与事件驱动机制协同运作的结果。它不靠线程堆叠,而是靠“一个 Worker 处理成千上万连接”来实现轻量高并发。关键不在数量堆砌,而在连接生命周期的精细管控——从建立、复用到释放,每一步都需匹配硬件资源与业务特征。
Worker 进程数与 CPU 资源对齐
Worker 进程是连接处理的实际执行单元,数量直接影响并发吞吐上限。设得过少,CPU 利用率低、连接排队;设得过多,进程切换开销上升,反而拖慢响应。
- worker_processes auto; 是最稳妥的选择,Nginx 会自动读取系统 CPU 核心数并匹配进程数
- 若需手动指定(如容器环境或绑核部署),应等于物理核心数,而非超线程数
- 配合 worker_cpu_affinity auto; 可让每个 Worker 绑定到独立 CPU 核心,减少上下文切换和缓存抖动
单 Worker 并发连接能力调优
每个 Worker 能同时维持多少连接,由 worker_connections 和系统资源共同决定。它不是孤立参数,必须与文件描述符限制、内核网络队列联动。
- worker_connections 建议设为 10240 或更高(如 32768),但需确保系统级限制同步提升
- 通过 worker_rlimit_nofile 100000; 提前声明 Worker 进程可打开的最大文件数(含 socket)
- Linux 系统需同步调整:
ulimit -n 100000,并在/etc/security/limits.conf中持久化
长连接复用与资源回收平衡
HTTP Keepalive 是降低 TCP 开销的核心手段,但维持太久会占用连接槽位和内存;太短又失去复用价值。关键在于按业务节奏设定超时与请求数阈值。
- keepalive_timeout 75; 是较通用的值,适用于多数 API 或静态资源场景(60–120 秒区间可调)
- keepalive_requests 100; 限制单个长连接承载的请求数,防止单连接长期霸占资源
- 后端 upstream 中的 keepalive 32; 需与后端服务空闲连接池容量匹配,避免连接被后端主动断开
事件模型与底层 I/O 效率保障
Nginx 在 Linux 下默认使用 epoll,这是实现“单线程高并发”的技术底座。它的高效不只靠启用,更依赖合理配置与系统协同。
- use epoll; 显式声明可避免自动探测失败,尤其在旧版内核或容器中
- multi_accept on; 允许单次事件循环中接受多个新连接,减少延迟抖动
- 内核层面需调大
net.core.somaxconn和net.ipv4.tcp_max_syn_backlog,防止连接请求在内核队列中被丢弃



















