Nginx并发连接数worker_connections调优 Nginx

前言

高并发下 Nginx 报 too many open files、连接被拒,和 worker 进程数、worker_connections 及系统文件描述符上限有关。本文讲解 worker_processes、worker_connections 计算、ulimit 配合和调优平衡点。

操作步骤

1. 设置 worker 进程数(通常等于 CPU 核数)

worker_processes auto;

2. 每个 worker 最大连接数

events {
    worker_connections 10240;
}

3. 打开文件描述符上限

worker_rlimit_nofile 65535;

4. 系统层同步抬高 limit

ulimit -n 65535

并写入 /etc/security/limits.conf 永久生效。

5. 计算理论并发

反向代理每个连接占两个 FD(客户端+后端),总并发 ≈ worker_processes × worker_connections / 2。

6. 校验并重载

nginx -t && nginx -s reload

7. 实时连接数查看

nginx -V 2>&1 | grep -i limit

常见坑

  1. 只调 worker_connections,没抬 ulimit,仍报打开文件过多。
  2. worker_processes 写死成 1,多核浪费。
  3. 连接数盲目调到几十万,受内存和 FD 上限约束。
  4. 反代按双倍 FD 计算,别用单连接口径估算。
  5. 系统 limits.conf 未登录生效,需重启或重新登录。
  6. keepalive 长连接占用 FD,空闲连接过多反而压满。
  7. 单机瓶颈还在后端,调 Nginx 解决不了。

总结

worker_processes auto 匹配核数,worker_connections 抬到万级,worker_rlimit_nofile 和系统 ulimit 同步抬高。反代按双倍 FD 估算并发。参数受内存与后端能力约束,不是越大越好,压测观察再定。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-11-15 07:13 
'); })();