Nginx 架构以及工作流程图


Nginx 在是以守护进程的形式在后台运行,采用 多线程+异步非阻塞IO事件模型 来处理各种请求。多线程模型包括一个 master 进程,多个 worker 进程,一般 worker 进程个数是根据服务器 CPU 核数来决定的。master 进程负责管理 Nginx 本身和其他 worker 进程。

Master 进程的主要职责

  • 读取并验证配置信息(nginx.conf)
  • 创建,绑定,关闭套接字(IP + PORT)
  • 启动,终止,维护 worker 进程的个数

Worker 进程的主要职责

  • 处理连接和请求
  • Worker 进程的个数由配置文件决定,一般和 CPU 个数相关,配置几个就有几个 Worker 进程。

Nginx 如何实现热部署

所谓热部署,就是修改配置文件 nginx.conf 后,不需要重启 nginx,不需要中断请求,就能让配置文件生效。

在修改完配置文件后,会重新生成新的 worker 进程,会以新的配置进行处理请求,而且新的请求也会交给新的 worker 进程处理,老的 worker 进程,会在执行完请求直接关闭。

Nginx 如何做到高并发下的高效处理

Nginx 采用了 Linux 的 epoll 模型,epoll 模型是基于事件驱动机制,它可以监控多个事件是否准备完毕,如果 OK,那么放入 epoll 队列中,这个过程是异步的。worker 只需要从 epoll 队列循环处理即可。

Worker 如何处理请求

一个请求由一个 worker 进程处理。

Nginx 在内部维护了一个 accept_mutex,其实就是锁,确保在某一时刻,一个请求只能被一个 worker 进程捕获。当一个 worker 进程在 accept 这个连接之后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接。

异步/非阻塞/事件驱动

我们知道,很多请求来了,他们大多需要读写数据,发生IO请求,此时程序就会发生中断,如果此时我们一直等待IO调用结束,才继续工作,那么这种就是阻塞的,那么很显然很多请求来了,都处于等待状态,CPU就将处于空闲状态,为了提供高并发的能力,Nginx采用的是非阻塞的方式。如果发生IO中断,那么你去做你的事情,但是过一段时间来看看IO调用是否结束,这就是非阻塞:你可以做更多的事情,但是你得时不时的检查中断状态,带来的开销也不小。

为了更高效,Nginx利用了LINUX的EPOLL模型(其他系统类似):

EPOLL模型,提供一种事件驱动机制,它可以监控多个事件是否准备好了,如果准备好了,那么就放入EPOLL队列中。这种机制是异步的。通过这样,WORKER进程只需要循环处理EPOLL队列中的请求,我们只需要在请求间不断切换,而这种切换是不需要付出什么代价的,通过这种循环处理已经准备好的请求,从而Nginx可以高效的处理高并发的问题。

【Nginx】Nginx 工作原理相关推荐

  1. nginx的工作原理与nginx的配置

    1.nginx的工作原理 nginx的模块直接被编译进nginx,因此属于静态编译方式. 启动nginx后,nginx的模块被自动加载,与Apache不一样,首先将模块编译为一个so文件,然后在配置文 ...

  2. 万字多图,搞懂 Nginx 高性能网络工作原理!

    在单进程的网络编程模型中.所有的网络相关的动作都是在一个进程里完成的,如监听 socket 的创建, bind.listen.再比如 epoll 的创建.要监听事件的添加,以及 epoll_wait ...

  3. Nginx的工作原理

    Nginx 工作原理 Nginx 由内核和一系列模块组成:内核提供 web 服务的基本功能,如启用网络协议.创建运行环境.接收和分配客户 端请求.处理模块之间的交互.模块实现 Nginx 的各种功能和 ...

  4. Nginx工作原理及相关介绍

    Nginx工作原理及相关介绍 一.Nginx工作原理与模块介绍 1.Nginx基本工作原理 NGINX以高性能的负载均衡器,缓存,和web服务器闻名.Nginx由内核和模块组成,其中,内核的设计非常微 ...

  5. Nginx 教程(一)-- 工作原理及安装配置

    Nginx简介 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在一个BSD-like协议下发行,由俄罗斯人IgorSysoev开发,共俄罗斯大型的搜索 ...

  6. 【云计算基础服务-Nginx WEB服务器---原理及简介详解】

    文章目录 前言: 一.云计算基础服务-Nginx WEB服务器 详解 1.Nginx简介及原理 1.1 Nginx web简介 1.2 Nginx工作原理 前言: 本专栏专门讲解云计算服务基础知识,适 ...

  7. Nginx介绍和原理

    文章目录 nginx介绍 nginx的特性 nginx的优点 nginx的基本功能 nginx的应用类别 nginx模块分类 nginx的工作原理 nginx介绍 nginx是一款轻量级的Web服务器 ...

  8. nginx配置文件及工作原理详解

    nginx配置文件及工作原理详解 1 nginx配置文件的结构 2 nginx工作原理 1 nginx配置文件的结构 1)以下是nginx配置文件默认的主要内容: #user nobody; #配置用 ...

  9. Nginx 反向代理工作原理简介与配置详解

    Nginx 反向代理工作原理简介与配置详解 测试环境 CentOS 6.8-x86_64 nginx-1.10.0 下载地址:http://nginx.org/en/download.html 安装 ...

  10. Nginx源码分析:3张图看懂启动及进程工作原理

    图一:nginx 启动及内存申请过程分析 任何程序都离不开启动和配置解析.ngx 的代码离不开 ngx_cycle_s 和 ngx_pool_s 这两个核心数据结构,所以我们在启动之前先来分析下. 内 ...

最新文章

  1. 实现oracle-job准确定时
  2. 使用shell脚本监控共享池内存碎片
  3. 旧android 4 平板,如今的安卓平板值不值得买:小米平板4入坑指南
  4. vue组件调用(用npm安装)
  5. centos 安装boost(caffe需要)
  6. 举例说明string类和stringbuffer类的区别_String,StringBuilder,StringBuffer的区别
  7. [论文阅读] Scene Context-Aware Salient Object Detection
  8. [Regular] 4、正则表达式的匹配原理原则
  9. android字体等宽,Android等宽字体大小
  10. python架构师是做什么的_架构师的工作都干些什么?!想做架构师必看!
  11. python源码剖析_《Python源码剖析》很值很强大!
  12. js 直接打开选择文件窗口_打开CAD文件时,怎么快速选择“gbcbig.shx”字体?
  13. esxi安装系统ndows,ESXI 安装 Windows Server 2012过程
  14. 中国气象台API(2017.09)
  15. 多维度对抗 Windows AppLocker
  16. 线性电源(LDO)原理分析
  17. 【网络-实验】配置Loopback Detection检测环路
  18. 啊哈添柴挑战Java1827. 顺序输出(难)
  19. word2vec(2) 背景知识
  20. c语言中a-这个作用是什么,c语言中a*=y什么意思?

热门文章

  1. 安装linux系统 黑屏,Ubuntu 16.04安装时显示器黑屏处理
  2. 支付宝扫描二维码支付
  3. 华为性格测试挂的原因是什么?这局怎么破?
  4. php收费视频网站实现,超好影视网站PHP源码,一键采集视频资源,对接第三方免签码支付,能设置每个视频能否收费...
  5. 使用SSH从服务器下载文件
  6. java三大框架要学多久_新手学习SSH三大框架的几点建议
  7. 大数据外部性案例分析_大数据外部性案例分析
  8. iPhone的mysql客户端_苹果系统Sequel Pro—MySQL客户端工具一个大坑
  9. 查看JVisualVM查看信息
  10. 递归算法及经典递归例子代码实现