worker_processes 是 Nginx 的核心配置参数,它决定了 Nginx 工作进程的数量。正确的设置可以显著提升服务器性能,不合理的配置则可能导致资源浪费或性能下降。
# 语法
worker_processes number | auto;
# 示例
worker_processes auto; # 自动检测CPU核心数
worker_processes 4; # 固定设置为4个工作进程
建议设置为 CPU 核心数或 auto
# 推荐设置(大多数场景)
worker_processes auto;
worker_processes = CPU核心数worker_processes = CPU核心数 × 1.5 ~ 2# 高流量网站
worker_processes auto;
worker_connections 10240; # 每个进程连接数调高
# 内存受限环境
worker_processes 2; # 减少进程数降低内存消耗
# 多用途服务器(同时运行数据库等)
worker_processes 2; # 留出资源给其他服务
events {
# 最大客户端连接数 = worker_processes × worker_connections
worker_connections 1024;
}
# 示例:4个进程 × 1024连接 = 4096并发连接
# /etc/nginx/nginx.conf
# 自动检测CPU核心数(推荐)
worker_processes auto;
# 设置进程绑定CPU(减少上下文切换)
worker_cpu_affinity auto;
# 定义进程优先级(默认不设置)
worker_priority 0;
# 进程文件位置
pid /var/run/nginx.pid;
events {
# 使用高效的事件模型(Linux推荐)
use epoll;
# 每个工作进程最大连接数
worker_connections 4096;
# 连接队列大小
multi_accept on;
}
http {
# ... 其他配置
}
# Linux
grep processor /proc/cpuinfo | wc -l
nproc
# 查看当前Nginx进程
ps aux | grep nginx | grep -v grep
# 查看Nginx进程状态
systemctl status nginx
# 实时监控
top -p $(pgrep -d',' nginx)
# 查看连接数
netstat -an | grep :80 | wc -l
# 8核CPU服务器
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000
00010000 00100000 01000000 10000000;
# 4核CPU + 超线程
worker_processes 8; # 利用超线程
# ❌ 错误:设置超过CPU核心数太多
worker_processes 32; # 在4核CPU上
# ❌ 错误:设置过小
worker_processes 1; # 无法利用多核
# ✅ 正确:根据实际情况调整
worker_processes auto;
# 使用ab进行压力测试
ab -n 10000 -c 100 http://your-server/
监控CPU使用率
mpstat -P ALL 1
2. **调整步骤**
- 从 `worker_processes auto` 开始
- 监控服务器负载
- 根据监控数据微调
- 测试不同配置的性能
## 总结
| 服务器配置 | 推荐值 | 说明 |
|-----------|--------|------|
| 1-2核 | 2-4 | 考虑超线程,I/O密集型可增加 |
| 4核 | 4-8 | 通用设置,auto通常最佳 |
| 8核以上 | auto | 让Nginx自动管理 |
| 内存<1GB | 1-2 | 减少内存压力 |
| 专用服务器 | CPU核心数 | 最大化利用资源 |
**最安全的做法是设置为 `auto`,让 Nginx 自动检测 CPU 核心数,然后在监控的基础上进行微调。**