博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈nginx多进程模型
阅读量:4081 次
发布时间:2019-05-25

本文共 820 字,大约阅读时间需要 2 分钟。

浅谈nginx多进程模型

摘自:

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进程间异常不会相互影响,一个进程挂掉之后,其他进程还在工作,可以提高服务的稳定性。
  • 尽可能的利用多核特性,最大化利用系统资源。

 

转载地址:http://awoni.baihongyu.com/

你可能感兴趣的文章
ES6中Set和WeakSet的使用
查看>>
[React Native]react-native-scrollable-tab-view(进阶篇)
查看>>
React Native开源封装AES,MD5加密模块(react-native-encryption-library)
查看>>
使用Vue.js框架搭建火车票查询系统
查看>>
1-vuejs2.0实战:仿豆瓣app项目,创建自定义组件tabbar
查看>>
基于vue的下拉刷新&滚动刷新指令
查看>>
Vue2 移动端开发环境搭建
查看>>
webpack入坑之旅不是开始的开始
查看>>
React Native 解决ScrollView 上 TextInput 键盘遮挡问题
查看>>
Qunar React Native 实践
查看>>
基于 vue2 + vuex2 构建一个具有 40 多个页面的大型单页面应用 饿了么
查看>>
webpack入坑之旅(三)webpack.config入门
查看>>
webpack入坑之旅(二)loader入门
查看>>
webpack入坑之旅(四)扬帆起航
查看>>
webpack入坑之旅(五)加载vue单文件组件
查看>>
webpack入坑之旅(六)配合vue-router实现SPA
查看>>
webpack入坑之旅(二)loader入门
查看>>
延迟加载(Lazyload)三种实现方式
查看>>
redux在react中的应用(基础篇)
查看>>
手机端rem布局详解(淘宝无限适配)
查看>>