Nginx底层进程机制剖析

Nginx(六)底层进程机制剖析

Nginx启动后,以**daemon多进程**方式在后台运行,包括一个Master进程和多个Worker进程,Master进程是领导,Worker进程是干活的小弟。
在这里插入图片描述

  • master进程

    主要是管理和监控worker进程,比如:

    • 接收外界信号如./nginx -s reload,分发给worker进程
    • 监控worker进程的运行状态,当worker进程异常退出后Master进程会自动重新启动新的worker进程
  • worker进程

    worker 进程具体处理网络请求。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的

    一个请求,只可能在一个worker进程中处理,一个worker进程不可能处理其他进程的请求。每个Worker进程都有自己的事件循环,可以同时处理多个并发的请求。worker进程的个数是可以设置的,一般设置与机器cpu核数一致。

Nginx进程模型示意图

  • 以 ./nginx -s reload 来说明Nginx信号处理这部分

    1)master进程对配置文件进行语法检查

    2)尝试配置(比如修改了监听端口,那就尝试分配新的监听端口)

    3)尝试成功则使用新的配置,新建worker进程,这是为了确保在更新配置的过程中不会中断服务

    4)新建成功,给旧的worker进程发送关闭消息

    5)旧的worker进程收到信号会继续服务,直到把当前进程接收到的请求处理完毕后关闭,所以reload之后worker进程pid是发生了变化的

在这里插入图片描述

  • worker处理请求部分的说明

    例如,我们监听7903端口,一个请求到来时,如果有多个worker进程,那么每个worker进程都有可能处理这个连接。

    • master进程创建之后,会建立好需要监听的socket(listenfd),然后从master进程再派生出多个worker进程。所以,所有worker进程的监听描述符listenfd再新链接到来时都变得可读。
    • nginx使用互斥锁来保证只有一个worker进程能够获取到互斥锁,拿到互斥锁的那个进程注册listenfd读事件,在读事件里调用accept接受该连接,然后解析、处理、并向客户端返回请求的数据。
  • nginx多进程模型好处

    • 每个Worker进程都是独立的,它们在处理请求时无需加锁,避免了锁竞争和串行化带来的性能开销。这使得Nginx在高并发情况下能够高效地处理请求。
    • 每个worker进程都是独立的,互不影响,一个异常结束,其他的照样能提供服务
    • 多进程模型为reload热部署机制(reload)提供了支撑

能提供服务

  • 多进程模型为reload热部署机制(reload)提供了支撑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峰子大疯子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值