核心办法是让每个Nginx工作进程固定绑定到独立CPU核心以减少调度开销;通过grep processor /proc/cpuinfo | wc -l查看逻辑核心数,配置worker_processes auto、worker_cpu_affinity auto和worker_rlimit_nofile 65535实现自动优化,高核数下效果显著。

核心办法是让每个 Nginx 工作进程固定绑定到一个独立的 CPU 核心,避免操作系统在不同核心间来回调度进程。
确认 CPU 核心数量
运行命令查看真实可用的核心数:
grep processor /proc/cpuinfo | wc -l
输出结果就是逻辑 CPU 核心总数。注意区分物理核与超线程(如 4 物理核 + 超线程可能显示为 8),一般建议按逻辑核心数配置,除非明确知道存在调度干扰问题。
启用自动进程分配与 CPU 亲和
在 nginx.conf 的 main 块中设置:
- worker_processes auto; —— 让 Nginx 自动匹配逻辑核心数
- worker_cpu_affinity auto; —— 自动将每个 worker 绑定到唯一核心,无需手动写二进制掩码
- worker_rlimit_nofile 65535; —— 提升单个 worker 可打开的文件描述符上限,配合高并发连接使用
这三项组合能显著减少上下文切换、提升 L1/L2 缓存命中率,尤其在 4 核及以上的服务器上效果明显。
手动指定亲和性(适合特殊场景)
如果使用旧版 Nginx(低于 1.9.10)或需要精确控制,可手动配置 worker_cpu_affinity。例如 8 核机器:
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
每一位对应一个逻辑 CPU,1 表示启用,从右往左编号为 CPU 0 到 CPU 7。确保掩码数量与 worker_processes 数量一致。
验证是否生效
重启 Nginx 后执行:
ps -eo pid,comm,psr | grep nginx
观察每个 nginx: worker process 对应的 psr 列数值是否稳定(如始终是 0、1、2…),不跳变即表示绑定成功。也可用 taskset -cp <pid> 查看具体绑定关系。



















