双十一大促Nginx调优核心是“稳、准、省”:worker_processes应设为物理核心数(非超线程),绑定CPU亲和性,禁用auto;重点提升worker_connections、upstream keepalive及系统级连接参数。

双十一大促的瞬时流量不是靠堆 worker_processes 解决的,而是要让它“稳、准、省”——稳在不抢资源,准在匹配硬件,省在减少调度开销。核心原则是:设对数量、绑对核心、让出资源给连接和上游复用。
按物理核心数设值,别信 auto 在容器里
大促前务必确认真实 CPU 物理核心数(非超线程数),用 lscpu | grep "CPU\(s\)" 或 grep -P "^physical id|^cpu cores" /proc/cpuinfo 验证。例如 8 核服务器,应写:
- worker_processes 8;
- 避免 worker_processes auto; —— 容器或云主机常把超线程当逻辑核,导致进程数翻倍,引发 epoll 竞争和 accept 饥饿
- 单核虚拟机必须设为 1;2 核就设 2,多一个都可能因上下文切换拖垮吞吐
必须配 CPU 亲和性,否则缓存白绑
每个 worker 进程绑定唯一物理核心,能显著降低 L1/L2 缓存失效,压测中 P99 延迟波动可收窄 30% 以上。配置示例:
- 4 核机器:worker_cpu_affinity 0001 0010 0100 1000;
- 8 核机器(只启 4 个 worker):worker_cpu_affinity 00000001 00000010 00000100 00001000;
- 不要用 worker_cpu_affinity auto; —— 它在部分内核版本下行为不可控,生产环境建议显式指定
反向代理场景下,worker 数不是性能瓶颈
大促流量本质是海量短连接打向上游服务,真正卡点在连接建立与复用效率,而非 worker 进程数量。重点应转向:
- 调高 worker_connections(如 65535),并同步提升系统级文件描述符限制(worker_rlimit_nofile 1000000; + /etc/security/limits.conf 配置)
- 优化 upstream keepalive:4 个 worker × keepalive 32 = 128 条空闲复用连接,已覆盖多数 API 网关场景;若后端延迟高,优先增大 keepalive_requests 和 proxy_read_timeout,而非加 worker
- 禁用 accept_mutex on;(改用 off),配合 multi_accept on;,让单次事件循环尽可能多地 accept 新连接,缓解突发洪峰排队
配套系统层必须同步调整
Nginx 配置再优,系统限制没放开也会在大促第一波流量就报 503。关键项包括:
- net.core.somaxconn = 32768(监听队列长度)
- net.ipv4.tcp_max_syn_backlog = 16384(SYN 半连接队列)
- fs.file-max = 2097152(系统级最大文件句柄)
- 确保 ulimit -n 对 nginx 用户生效(推荐设为 1000000)


















