推荐设为worker_processes auto;,它自动读取系统逻辑CPU核数(如nproc结果),适配容器与虚拟机;需配合worker_cpu_affinity auto;、worker_rlimit_nofile 65535;等协同调优,并在main块配置后用nginx -t验证。

worker_processes 应设为服务器逻辑 CPU 核心数,最推荐直接写 worker_processes auto; —— 它会自动读取当前环境可用的逻辑核数(含超线程),既准确又适配容器和虚拟机,避免手动查错或硬编码失配。
怎么确认该设多少
别依赖 /proc/cpuinfo,尤其在 Docker 或 KVM 虚拟机里容易误读宿主机信息。用以下命令查真实可用逻辑核数:
- nproc —— 输出数字即为逻辑核心总数,比如输出 8,就对应 worker_processes 8
- lscpu | grep "CPU(s):" —— 看 “CPU(s):” 行末尾的数值
- 容器中还要看 cgroup 限制:cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us /sys/fs/cgroup/cpu/cpu.cfs_period_us,算出实际分配的 vCPU 数
必须配合的绑定设置
只设对进程数还不够,不绑定 CPU 容易导致 worker 进程在不同核心间频繁迁移,L2/L3 缓存反复失效,高负载下性能明显打折:
- Nginx 1.9.10+ 推荐直接加:worker_cpu_affinity auto;
- 老版本可手动指定,如 4 核: worker_cpu_affinity 0001 0010 0100 1000;
- 该指令必须放在 nginx.conf 的 main 块(最外层),不能塞进 http 或 server 里
配套参数要同步调好
worker_processes × worker_connections 才是理论最大连接数,但系统级限制常成瓶颈:
- 在 main 块加:worker_rlimit_nofile 65535;
- 在 events 块配:worker_connections 10240;(建议 ≥10240)
- 系统 ulimit 必须跟上:给 nginx 用户设软硬 nofile 限值 ≥65536,写入 /etc/security/limits.conf
- events 块内加上:use epoll; multi_accept on;,提升事件处理效率
改完怎么验证是否生效
重载配置后别跳过验证:
- 执行:ps -eo pid,psr,comm | grep nginx,看各 worker 进程是否均匀分布在不同 CPU 编号上
- 运行 htop 或 top -H,观察每个 worker 的 CPU 占用是否均衡,总和应接近 N×100%(N 是 worker 数)
- 压测时关注 nginx_status 中的 Active connections 和 Waiting 比例;Waiting 长期偏高,说明连接队列积压,优先调大 worker_connections 或检查系统 fd 限制



















