ray-note/极客时间学习/Nginx_geek/核心基础.md

2.1 KiB
Raw Blame History

进程结构

  • 单进程结构
  • 多进程结构(默认配置-- 更适合工作环境):多线程情况下,一个线程(请求)引起的错误会影响整个进程,保证高可用性(一个请求失败后,不影响其他请求)
    • woker 进程
    • cache 进程
  1. master 进程
  2. work 进程
  3. Cache Manager
  4. Cache Loader Master 进程用来管理work进程 work进程用来处理实际的请求Cache Loader 用来加载缓存Cache Manager 用来管理缓存 work进程需要使用cache进程 在 配置work 进程数时需要把work进程数配置到和CPU核心数一样还要为每个work进程绑定核心 提高work进程的处理的能力和稳定性。

进程管理 -- 信号

Master 进程

  1. 监控 Worker 进程
    • CHLD -- worker 进程结束的时候会向master 发送 CHLD 信号用来监听worker进程在必要的时候拉起worker进程
  2. 管理 Worker 进程
  3. 接收信号
    • TERM, INT -- 理解停止
    • QUIT -- 不影响用户的情况下,停止
    • HUP -- 重载配置文件
    • USR1 -- 重新打开日志文件, 做日志文件的切割
    • USR2 --
    • WINCH

USR2 和 WINCH 只能通过进程号 直接向master进程发送其他的可以使用nginx的命令行实现

Worker 进程 -- 通常不给worker进程发送信号

  1. 接收信号
    • TREM, INT
    • QUIT
    • USR1
    • WINCH

Nginx 命令行

  • reload: HUP
  • reopen: USR1
  • stop: TERM
  • quit: QUIT

reload 流程

  • 向master 发送 HUP 信号
  • master 检查配置文件语法正确性
  • master 打开新的监听端口
  • master 用 新的配置文件 启动新的worker进程
  • master 向老的worker子进程发送发动QUIT信号
  • 老的worker进程关闭监听句柄处理完当前连接后结束进程超时会被强制退出, 时间是由master进程决定的

热升级流程

worker进程优雅的结束

  1. 设置定时器 -- worker_shutdown_timeout
  2. 关闭监听句柄 -- 不再处理新的连接
  3. 关闭空闲连接 -- 从线程池中处理
  4. 在循环中等待全部连接关闭 (或者超时,被强制关闭)
  5. 退出进程

网络收发 与 Nginx 事件间的关系