nginx进程管理的本质原理
目录
一、Linux 信号管理机制
linux系统的信号实质就是软中断, 提供一种实现异步事件处理机制的方法。(中断分为硬中断和软中断, 前者由硬件触发(如磁盘,网卡,键盘,时钟等), 打断当前正在执行的程序A(突然插队); 后者由内核触发, 用于继续处理未完的程序A)
1.1 linux 系统的信号及其类型
linux 信号分为2大类: 可靠信号和不可靠信号,共计64种,编号从1至64.
不可靠信号:编号1~31
| 不可靠信号 | 可靠信号 | |
|---|---|---|
| 编号范围 | 1~31 | 32~64 |
| 特点 | 会丢失,不支持排队,也称非实时信号。如多次发送相同信号,只会收到一次(幂等性) | 与不可靠信号相反 |
1.2 信号表与nginx应用说明
使用kill -l命令查看具体信号命令

| 信号 | 编号 | 说明 |
|---|---|---|
| SIGHUB | 1 | 重新加载配置文件、重新生成work进程 |
| SIGINT | 2 | 强制关闭 |
| SIGQUIT | 3 | 平滑(优雅)的退出(等待当前连接结束, 若连接迟迟未结束, 则一直等待) |
| SIGUSR1 | 10 | 重新打开日志文件 |
| SIGUSR2 | 12 | |
| SIGTERM | 15 | 强制关闭 |
| SIGCHLD | 17 | 当子进程停止或退出时通知父进程 |
| SIGSTOP | 19 | 进程停止 |
| SIGPWR | 30 | 系统关机 |
二、nginx进程结构
2.1 nginx 为何高性能?
- 底层是基于
epoll的异步非阻塞的事件编程模型,提高单个进程的并发性。 - 采用
多进程单线程模式, 避免同一进程内的线程产生资源竞争或上下文切换, 提升宏观并发性。
2.2 进程模型图

2.2.1. master进程角色
信号处理和work进程的管理与监控
不直接提供web服务
2.2.2. worker进程角色
处理web请求
worker之间相互隔离、相互平等
2.2.3. cache进程角色
共享内存提供缓存功能
session持久化、日志
限速
2.3 机制
三、使用信号管理nginx进程的3种方式(实操)
nginx信号实际上是对系统信号的进一步封装, 管理nginx实则是调用底层信号对进程ID进行操作. 注意图中的进程ID
3.1 master进程信号
监控work进程(CHLD)
管理work进程
可接受信号有:
TERM、INT:强制关闭
QUIT:平滑关闭(等待当前连接结束)
HUP:重新加载配置文件、重新生成work进程
USR1: 重新打开日志文件
USR2
WINCH

3.2 worker进程信号
TERM、INT:强制关闭
USR1
WINCH

3.3 nginx命令行
reload:HUP
reopen:USR1
stop:TERM
quit:QUIT


浙公网安备 33010602011771号