nginx多进程优化核心是减少调度干扰与资源竞争:worker_processes设为物理核心数(推荐auto),配合worker_cpu_affinity绑定独立核心,关闭accept_mutex并调优内核参数以提升并发吞吐。

Nginx 多进程架构的资源调度优化,核心不是让进程“抢资源”,而是减少切换、等待和竞争——通过 master-worker 模型与系统层协同,把每个 worker 进程稳稳地“钉”在合适的位置上高效干活。
worker 进程数量要匹配 CPU 实际能力
设太多会引发频繁上下文切换;设太少又压不满 CPU。推荐直接用 worker_processes auto;,Nginx 会自动读取物理核心数(含超线程),比硬写数字(如 8)更适应容器或云环境。对重度计算型场景(比如大量 Lua 脚本或复杂 rewrite),可设为 CPU 核数的 1.5–2 倍,但需实测验证是否带来净收益。
让每个 worker 绑定专属 CPU 核心
启用 worker_cpu_affinity auto; 后,每个 worker 自动绑定独立核心,避免跨核缓存失效,提升 L1/L2 缓存命中率。在 NUMA 架构服务器上效果更明显——防止远端内存访问延迟拖慢响应。若手动指定,格式如 worker_cpu_affinity 0001 0010 0100 1000;(4 个 worker 各占 1 核)。
消除连接争抢,释放并发吞吐潜力
默认 accept_mutex on 会让所有 worker 轮流抢新连接,高并发下成瓶颈。改为 accept_mutex off,配合 multi_accept on,使每个 worker 在一次 epoll_wait 返回后尽可能多地 accept 新连接,显著提升连接接纳速率。注意:此配置需确保内核 socket 队列足够大(net.core.somaxconn 与 Nginx 的 listen ... backlog 保持一致,如都设为 65535)。
缓冲区与内核参数对齐,减少底层错配
Nginx 的 buffer 大小(如 client_header_buffer_size、proxy_buffer_size)应为系统页大小(通常 4KB)整数倍,避免跨页分裂。若启用 2MB 大页,需同步调整 buffer 为 512KB 或 1MB 等子倍数。同时设置 net.ipv4.tcp_rmem = 4096 262144 8388608,中间值(256KB)应 ≥ proxy_buffer_size;关闭 tcp_timestamps 减少开销,设 vm.swappiness = 1 防止误触发 swap。











