必须从硬件选型、内核参数、cpu调度和系统资源限制四层同步优化:选用多核xeon/epyc cpu与nvme ssd,配置net.core.somaxconn=20480、tcp_tw_reuse=1等内核参数,启用worker_cpu_affinity绑定核心,并在limits.conf和systemd中放宽nofile限制。

要让 Nginx 真正跑出高并发、低延迟的性能,光调配置远远不够——必须从底层硬件选型、内核协议栈、CPU 调度和系统资源限制四层同时入手。这不是“可选优化”,而是生产环境稳定扛住万级并发的前提。
硬件选型与物理层对齐
硬件不是越贵越好,而是要匹配 Nginx 的工作模型:
- CPU:优先物理核心,禁用超线程(HT)。Nginx worker 进程是 CPU 密集型 + I/O 密集型混合负载,逻辑核心会加剧缓存竞争和上下文切换。推荐配置:4–16 核 Intel Xeon 或 AMD EPYC,主频 ≥2.5GHz 即可,不必追求高频;
-
存储:强制使用 NVMe SSD,尤其当开启
aio on、sendfile on或大量静态文件服务时,机械盘 I/O 成为瓶颈; -
网卡:双口 10G 起步,启用 Bonding(mode=4,LACP),并用
ethtool -L eth0 combined 4将中断队列数设为 CPU 核心数,再绑定中断 affinity 到对应核心,避免网卡软中断打满单个 CPU; -
内存:≥32GB,双通道 DDR4-3200 或 DDR5-4800,重点保障
open_file_cache和proxy_cache有足够空间,避免频繁换入换出。
Linux 内核参数深度调优
这些参数直接影响连接建立、复用、回收和文件句柄承载能力,必须写入 /etc/sysctl.conf 并执行 sysctl -p 生效:
-
TCP 连接管理:
net.core.somaxconn = 20480(扩大全连接队列)、net.ipv4.tcp_tw_reuse = 1(TIME-WAIT 复用)、net.ipv4.tcp_fastopen = 3(客户端+服务端均启用 TFO,配合 SSL 效果更佳); -
文件与内存:
fs.file-max = 1048576(全局最大文件描述符)、vm.swappiness = 1(禁止非必要 swap,Nginx 不适合交换); -
网络缓冲:
net.core.rmem_max = 16777216、net.core.wmem_max = 16777216(提升单连接吞吐)、net.ipv4.tcp_rmem = 4096 262144 16777216(自适应接收窗口)。
CPU 亲和性与进程调度优化
Nginx 默认不绑定 CPU,多核下容易出现 worker 进程在不同核心间跳变,导致 L1/L2 缓存失效:
- 在
nginx.conf全局块中配置:worker_processes auto;(自动识别物理核心数); - 显式绑定:
worker_cpu_affinity 0001 0010 0100 1000;(4 核示例),或使用auto模式(Nginx 1.12.0+ 支持); - 确认生效:运行
ps -eo pid,psr,comm | grep nginx,观察每个 worker 进程是否稳定落在指定 CPU 上; - 补充建议:在
/etc/default/grub中添加isolcpus=1,2,3,4(预留核心给 Nginx),再update-grub && reboot,进一步隔离干扰。
系统级资源限制同步放宽
Nginx worker 进程受 Linux 用户级限制约束,即使内核允许百万连接,进程也拿不到:
- 编辑
/etc/security/limits.conf,加入:
* hard nofile 1048576
* soft nproc 65535
* hard nproc 65535
- 确保 Nginx 启动用户(如
www-data或nginx)能加载该限制; - 若用 systemd 启动,还需在
/lib/systemd/system/nginx.service中添加:
LimitNPROC=65535
- 重载配置:
systemctl daemon-reload && systemctl restart nginx。











