Nginx 多核性能优化需 worker_processes 与 worker_cpu_affinity 协同配置:前者设为物理核心数(推荐 auto),后者绑定各进程至独立核心,并同步调优 worker_connections、ulimit 及 NUMA 隔离。

Nginx 默认只用一个 CPU 核心运行 worker 进程,要真正发挥多核性能,必须显式配置进程绑定和数量控制。核心在于两个参数协同:worker_processes 决定开几个进程,worker_cpu_affinity 决定每个进程绑到哪颗核。
明确 worker_processes 数量
这个值不宜盲目设高。推荐设为 CPU 逻辑核心数(如 4 核 8 线程就设 8),最多不超过 8。超过 8 后性能不升反降,稳定性也会下降。
可写 auto 让 Nginx 自动识别,也可手动指定:
worker_processes 4;
用 worker_cpu_affinity 绑定核心
该指令按二进制位映射 CPU 核心,位数等于物理/逻辑核心总数。1 表示启用对应核,0 表示禁用。
-
2 核 CPU(逻辑核心数为 2):
worker_processes 2; worker_cpu_affinity 01 10;
第一个进程跑在第 1 核,第二个进程跑在第 2 核。
-
4 核 CPU(逻辑核心数为 4):
worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000;
每个进程独占一颗核,避免上下文切换开销。
-
8 核 CPU,只开 2 个进程但希望跨核均衡:
worker_processes 2; worker_cpu_affinity 10101010 01010101;
第一个进程用偶数核(2/4/6/8),第二个用奇数核(1/3/5/7),提升缓存命中率。
配套调优不能少
-
worker_rlimit_nofile 65535;:确保单个进程能打开足够文件描述符,匹配worker_connections -
events { use epoll; worker_connections 65535; multi_accept on; }:Linux 下启用高效事件模型,允许一次收多个连接
这些配置都写在 nginx.conf 的全局块(即 events 块上方、http 块之外),不是放在 server 或 upstream 里。
本质上,这不是“负载均衡”而是“CPU 负载分摊”——把 Nginx 自身的请求处理任务均匀压到多个物理核上,为后续反向代理或 upstream 负载均衡打下性能基础。


















