跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

如何配置 worker_processes auto 让 Nginx 自动适配 CPU 核心数

正确写法是worker_processes auto;,Nginx启动时调用sysconf(_SC_NPROCESSORS_ONLN)获取系统在线逻辑CPU数作为进程数,不识别cgroup限制或超线程状态。 直接在 Nginx 主配置文件(通常是
/etc/nginx/nginx.conf
)的最外层(即 main 块 )中写入: 正确写法:用 auto 作值,不是新指令 worker_processes 的合法语法只有
worker_processes number;
或
worker_processes auto;
。不存在
worker_processes_auto
这个配置项——这是常见误写。 ✅ 正确:
worker_processes auto;
❌ 错误:
worker_processes_auto on;
或
worker_processes = auto;
它怎么自动获取核心数? Nginx 启动时调用系统接口
sysconf(_SC_NPROCESSORS_ONLN)
,读取当前操作系统报告的 在线逻辑 CPU 数 (即
nproc
命令输出的值),并以此作为 worker 进程数量。 Nginx 在宝塔面板中轻松管理Nginx高性能Web服务器。提供可视化配置反向代理、负载均衡、SSL证书及HTTP缓存功能,一键优化高并发性能,助您高效搭建稳定、快速的网站运行环境。 下载 它不看 cgroup 限制(容器里设了 2 核,宿主机有 32 核,仍会启 32 个) 它不区分超线程是否启用,只认系统“可见”的逻辑核 在 OpenVZ 等旧虚拟化环境可能返回 1,上线前建议验证 容器或云环境需配合调整 auto 虽方便,但在资源受限场景下容易失准: Docker/K8s 中设置了
resources.limits.cpu: "2"
→ 应显式写
worker_processes 2;
若必须用 auto,建议搭配
worker_cpu_affinity auto;
(Nginx ≥1.12.0),减少跨核调度开销 混合部署(如 Nginx + Java 共存)可预留核心:
worker_processes $(nproc --all | awk '{print $1-2}');
(需启动脚本支持) 配置后如何确认生效? 不要只信配置文件,要验证运行态: 查错误日志:
tail -f /var/log/nginx/error.log
,启动时会打印
using X processes
看进程数:
ps -C nginx --no-headers | wc -l
(结果应等于 worker_processes 值) 查加载配置:
nginx -T 2>/dev/null | grep 'worker_processes'

相关文章