浅谈nginx多进程模型

浅谈nginx多进程模型

摘自:https://zhuanlan.zhihu.com/p/60504120

nginx是一款高性能的Web服务器,由于它优秀的性能、成熟的社区、完善的文档,受到广大开发者的喜爱和支持。它的高性能与其架构是分不开的,nginx的框架如下图所示:

nginx架构图-来源于网上

Nginx是经典的多进程模型,它启动以后以守护进程的方式在后台运行,后台进程包含一个master进程,和多个worker进程。其中master进程相当于控制进程,有以下作用:

  • 接收外界信号执行指令,包括配置加载、向worker发指令、优雅退出等等。
  • 维护worker进程的状态,当worker进程退出后,自动启动新的worker。

其中 master 进程支持的信号处理如下:

  • TERM、INT:快速退出
  • QUIT:优雅退出
  • HUP: 变更配置,用新配置启动worker,优雅关闭老的worker等。
  • USR1: 重新打开日志文件
  • USR2: 升级二进制文件(nginx升级)
  • WINCH: worker进程的优雅退出

单个worker进程也支持信号处理,包括:

  • TERM、INT: 快速退出
  • QUIT: 优雅退出
  • USR1: 重新打开日志文件
  • WINCH: 终端调试等

worker进程基于异步非阻塞的模式处理每个请求,这种非阻塞的模式,大大提高了worker进程处理请求的速度。为了尽可能的提高性能,nginx对每个worker进程设置了CPU的亲和性,尽量把worker进程绑定在指定的CPU上执行,以减少上下文切换带来的开销。由于这种绑核的模式,一般推荐worker进程的数目,为CPU的核数。

nginx使用了master<->worker这种多进程的模型,有哪些好处呢?

  • worker进程间很少共享资源,在处理各自请求时,几乎不用加锁,省掉了锁带来的开销。
  • worker进程间异常不会相互影响,一个进程挂掉之后,其他进程还在工作,可以提高服务的稳定性。
  • 尽可能的利用多核特性,最大化利用系统资源。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

诗晓涵

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

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

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

打赏作者

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

抵扣说明:

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

余额充值