一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx 中 worker_processes 怎样在多核服务器上部署

时间:2026-07-07 09:42:52 编辑:袖梨 来源:一聚教程网

worker_processes 应设为服务器逻辑 CPU 核心数,优先使用 auto;需配合 worker_cpu_affinity 绑定核心,并同步调优 worker_connections 与系统文件描述符限制。

worker_processes 应设为服务器逻辑 CPU 核心数,不是随便填个大数字就行。配得准,比配得多更重要。

优先用 auto,省心又稳妥

绝大多数场景直接写 worker_processes auto; 就够了。Nginx 1.3.8+ 会自动读取系统可用逻辑核心数(含超线程),比如 4 核 8 线程就起 8 个进程。这个值在物理机、主流云主机和容器里都可靠,官方镜像也默认依赖它做适配。

  • 不用手动算核数,避免误判(比如把超线程当物理核)
  • 容器环境(如 Docker)中,auto 能识别 cgroups 限制的 vCPU 数,比硬编码更安全
  • 若用 worker_cpu_affinity,则不能用 auto,必须显式写数字

手动设置时,看逻辑核数,不是物理核数

执行 nproclscpu | grep "CPU(s):" -m1 查到的数字,就是该用的值。例如输出是 8,就设 worker_processes 8;

  • 超线程开启时(如 8c16t),按 16 设;关闭时按 8 设
  • 虚拟化环境(云主机、容器)中,/proc/cpuinfo 可能不准,以 nproc 输出为准
  • 不建议设成 1(除非调试),也不建议远超逻辑核数(如 32 核机器设 64)——调度开销和缓存抖动反而拖慢响应

绑定 CPU 核心,减少缓存失效

光设对进程数还不够,得让每个 worker 固定跑在指定核心上。启用 worker_cpu_affinity 后,L1/L2 缓存命中率明显提升,尾部延迟下降。

  • 4 核机器:worker_cpu_affinity 0001 0010 0100 1000;
  • 更简洁写法(Nginx 1.9.10+):worker_cpu_affinity auto;
  • 掩码位数必须和 worker_processes 数量严格一致,否则启动失败
  • 验证方式:ps axo pid,comm,psr,cmd | grep nginx,第三列 psr 应与你配置的 affinity 对应

别忘了配套调资源上限

worker_processes × worker_connections 是理论并发上限,但实际卡在系统限制上。必须同步处理:

  • 在 nginx.conf main 块加:worker_rlimit_nofile 65535;
  • 系统级设置:/etc/security/limits.conf 中加 nginx soft/hard nofile 65535
  • 确保 ulimit -n 在 Nginx 启动前已生效(可检查 systemd service 的 LimitNOFILE)
  • events 块中 worker_connections 建议设为 4096 或 8192,别超过 worker_rlimit_nofile

不复杂但容易忽略。

热门栏目