[toc]
| 单词 | 词性 | 音标 | 含义 |
|---|---|---|---|
| master | n. | /ˈmɑːstə(r)/ | 主进程(总指挥,管配置、worker、reload) |
| worker | n. | /ˈwɜːkə(r)/ | 工作进程(真正处理请求,一般按 CPU 核数配) |
| process | n. | /ˈprəʊses/ | 进程(正在运行的程序实例) |
| reload | v. | /ˌriːˈləʊd/ | 重载(master 优雅切换 worker,不中断请求) |
Lecture03-Nginx-主进程与工作进程
1、本节讲什么
搞懂 Nginx 运行起来后那一堆进程是干嘛的:**主进程(master)和工作进程(worker)**各管什么、怎么配 worker 数量。
2、概念速览
主进程(master):Nginx 启动后的"总指挥"。
- 负责读配置、管理 worker、reload、处理信号(
nginx -s reload其实是发给 master)。 - 不直接处理业务请求。
工作进程(worker):Nginx 的"干活的"。
- 真正处理客户端请求(接收连接、返回页面、转发到后端)。
- 一般配多个,充分利用多核 CPU。
类比(Java):master 像主线程/管理者(分配任务、管生命周期),worker 像线程池里的工作线程(真正执行任务)。Nginx 默认是多进程模型(一个 master + N 个 worker),worker 之间互不干扰。
3、照着做
① 看 Nginx 有哪些进程
ps -ef | grep nginx | grep -v grep
会看到类似:
root 主进程 ... nginx: master process /usr/sbin/nginx
www-data 工作进程 ... nginx: worker process
www-data 工作进程 ... nginx: worker process
一个 master + 多个 worker(数量由配置决定)。
② 配置 worker 数量
打开 /etc/nginx/nginx.conf,找到:
worker_processes auto; # 推荐 auto:自动按 CPU 核数开 worker
auto:按 CPU 核数自动开,推荐(家用/服务器通用)。- 也可写具体数字,如
worker_processes 4;。
③ 重载并确认生效
sudo nginx -t
sudo systemctl reload nginx
ps -ef | grep nginx # 数一下 worker 进程数量是否变了
4、常见疑问
- Q:worker 配越多越好吗?
A:不是。通常 = CPU 核数(
auto)最合适。配多了反而因为频繁切换降低效率。 - Q:reload 会杀掉正在处理的请求吗? A:不会。master 优雅地让旧 worker 处理完手头请求再退出,同时启动新配置的 worker。这就是为什么改配置用 reload 而不是 restart。
- Q:master 崩了会怎样?
A:worker 也活不久。所以 master 很关键,但平时不用你管——systemd 会拉起它(
systemctl管理)。
5、本节验证
- 分清主进程(master)与工作进程(worker)的职责 ✅
- 会用 ps -ef | grep nginx 观察进程结构 ✅
- 会配置 worker_processes 并重载生效 ✅