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

66 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 进程结构
- 单进程结构
- 多进程结构(默认配置-- 更适合工作环境):多线程情况下,一个线程(请求)引起的错误会影响整个进程,保证高可用性(一个请求失败后,不影响其他请求)
- 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. 关闭监听句柄 -- 不再处理新的连接
4. 关闭空闲连接 -- 从线程池中处理
5. 在循环中等待全部连接关闭 (或者超时,被强制关闭)
6. 退出进程
### 网络收发 与 Nginx 事件间的关系