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

posted @ 2021-09-21 13:07  UsingStuding  阅读(149)  评论(0)    收藏  举报