worker_processes 应设为cpu逻辑核心数,推荐配置为auto;过大或过小均降低性能,需配合worker_cpu_affinity绑定核心并调高ulimit-n以提升并发能力。

nginx 的 worker_processes 参数是影响并发处理能力的关键配置之一,它直接决定 nginx 启动多少个工作进程(worker process),而每个进程默认是单线程、事件驱动的。在多核 CPU 环境下,合理设置该参数,能让多个 CPU 核心真正被利用起来,避免单核瓶颈,提升整体吞吐量和响应速度。
worker_processes 应设为 CPU 核心数
最常用且推荐的做法是将 worker_processes 设置为服务器的逻辑 CPU 核心数(包括超线程)。例如,一台 4 核 8 线程的机器,通常设为 8;若不确定,可使用以下命令查看:
- Linux 下执行:nproc 或 lscpu | grep "CPU(s):"
- Nginx 配置中写成:worker_processes auto;(推荐)——Nginx 1.3.8+ 支持,会自动检测并设置为 CPU 核心数
避免 worker_processes 过大或过小
设得太小(如固定为 1),所有请求都挤在一个进程里,无法利用多核,高并发时容易成为瓶颈;设得太大(远超 CPU 核心数),反而会因进程调度开销、上下文切换频繁、锁竞争加剧导致性能下降。
- 一般不建议手动指定大于 CPU 核心总数的数值
- 虚拟化环境(如容器、云主机)需注意:/proc/cpuinfo 显示的核心数可能与实际分配的 vCPU 不一致,应以 nproc 输出为准
配合 worker_cpu_affinity 提升缓存命中率
启用 worker_cpu_affinity 可将每个 worker 进程绑定到特定 CPU 核心,减少跨核缓存失效(cache miss)和迁移开销,进一步提升性能,尤其在高负载场景下效果明显。
- 双核示例:worker_cpu_affinity 01 10;
- 四核示例:worker_cpu_affinity 0001 0010 0100 1000;
- 更简洁写法(auto 模式):worker_cpu_affinity auto;(Nginx 1.9.10+)
注意 worker_connections 与整体连接数的关系
worker_processes × worker_connections 决定了 nginx 理论最大并发连接数。但实际受限于系统级资源(如 ulimit -n、端口范围、内存等),不能只调高 worker_processes 就认为并发能力线性提升。
- 检查并调高系统文件描述符限制:ulimit -n 65536(需在 nginx 启动前生效)
- 确保 worker_connections 值合理(如 4096–16384),并与 worker_processes 协同调整
- 可通过 nginx -t 验证配置语法,并用 ps aux | grep nginx 观察实际运行的 worker 进程数量










