Lecture03-Nginx-主进程与工作进程

文章目录

    [toc]

    单词词性音标含义
    mastern./ˈmɑːstə(r)/主进程(总指挥,管配置、worker、reload)
    workern./ˈwɜːkə(r)/工作进程(真正处理请求,一般按 CPU 核数配)
    processn./ˈprəʊses/进程(正在运行的程序实例)
    reloadv./ˌ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 并重载生效 ✅
    end