Nginx 启动后至少会有两个进程。这是它的典型 多进程架构设计:
Nginx 的进程模型
启动时,Nginx 会分成 一个 Master 进程 和 一个或多个 Worker 进程:
-
Master 进程
-
负责管理 Worker 进程。
-
功能:
- 读取并验证配置文件 (
nginx -t) - 启动 / 停止 / 重启 Worker 进程
- 接收控制信号(如
nginx -s reload、stop)并转发给 Worker
- 读取并验证配置文件 (
-
Master 本身几乎不处理实际请求。
-
-
Worker 进程(默认 1 个,可配置多进程)
- 真正处理客户端请求(HTTP / TCP / UDP)。
- 每个 Worker 是单进程 + 异步非阻塞事件驱动模型(基于 epoll/kqueue)。
- 多个 Worker 不会相互竞争同一个连接,由内核决定分发给哪个 Worker。
查看进程
执行:
ps -ef | grep nginx
示例输出:
root 1234 1 0 10:00 ? 00:00:00 nginx: master process /usr/sbin/nginx
www-data 1235 1234 0 10:00 ? 00:00:00 nginx: worker process
www-data 1236 1234 0 10:00 ? 00:00:00 nginx: worker process
- 第一行是 master。
- 后面是 worker,数量取决于
nginx.conf里的配置。
Worker 数量配置
在 nginx.conf 里:
worker_processes auto;
auto→ 根据 CPU 核心数自动设置(推荐,生产常用)。1→ 只有一个 worker(测试/轻量场景)。- 手动设为
4→ 启动 4 个 Worker 进程。
总结
- Nginx 启动时至少有 2 个进程:1 个 Master + 至少 1 个 Worker。
- Master 管理,Worker 干活。
- Worker 数量可调,建议与 CPU 核心数一致(或
auto)。
Nginx Master-Worker 进程模型示意图(带请求分发流程)
┌────────────────────────────┐
│ Master 进程 │
│ (负责管理 Worker,不处理请求) │
└─────────────┬──────────────┘
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ Worker 进程 1 │ │ Worker 进程 2 │ │ Worker 进程 N │
│ (处理请求) │ │ (处理请求) │ │ (处理请求) │
└───────┬────────┘ └───────┬────────┘ └───────┬────────┘
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 客户端请求 1 │ │ 客户端请求 2 │ │ 客户端请求 3 │
└─────────────┘ └─────────────┘ └─────────────┘
1177

被折叠的 条评论
为什么被折叠?



