您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

Nginx为什么高效?一文搞明白Nginx核心原理

时间:2019-09-06 18:01:21  来源:  作者:

Nginx 的进程模型

Nginx为什么高效?一文搞明白Nginx核心原理

 

Nginx 服务器,正常运行过程中:

  1. 多进程:一个 Master 进程、多个 Worker 进程
  2. Master 进程:管理 Worker 进程
  3. 对外接口:接收外部的操作(信号)
  4. 对内转发:根据外部的操作的不同,通过信号管理 Worker
  5. 监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
  6. Worker 进程:所有 Worker 进程都是平等的
  7. 实际处理:网络请求,由 Worker 进程处理;
  8. Worker 进程数量:在 nginx.conf 中配置,一般设置为核心数,充分利用 CPU 资源,同时,避免进程数量过多,避免进程竞争 CPU 资源,增加上下文切换的损耗。

思考:

  1. 请求是连接到 Nginx,Master 进程负责处理和转发?
  2. 如何选定哪个 Worker 进程处理请求?请求的处理结果,是否还要经过 Master 进程?
Nginx为什么高效?一文搞明白Nginx核心原理

 

HTTP 连接建立和请求处理过程:

  1. Nginx 启动时,Master 进程,加载配置文件
  2. Master 进程,初始化监听的 socket
  3. Master 进程,fork 出多个 Worker 进程
  4. Worker 进程,竞争新的连接,获胜方通过三次握手,建立 Socket 连接,并处理请求

Nginx 高性能、高并发:

  1. Nginx 采用:多进程 + 异步非阻塞方式(IO 多路复用 epoll)
  2. 请求的完整过程:
  3. 建立连接
  4. 读取请求:解析请求
  5. 处理请求
  6. 响应请求
  7. 请求的完整过程,对应到底层,就是:读写 socket 事件

Nginx 的事件处理模型

request:Nginx 中 http 请求。

基本的 HTTP Web Server 工作模式:

  1. 接收请求:逐行读取请求行和请求头,判断段有请求体后,读取请求体
  2. 处理请求
  3. 返回响应:根据处理结果,生成相应的 HTTP 请求(响应行、响应头、响应体)

Nginx 也是这个套路,整体流程一致。

Nginx为什么高效?一文搞明白Nginx核心原理

 

模块化体系结构

Nginx为什么高效?一文搞明白Nginx核心原理

 

nginx的模块根据其功能基本上可以分为以下几种类型:

  • event module: 搭建了独立于操作系统的事件处理机制的框架,及提供了各具体事件的处理。包括ngx_events_module, ngx_event_core_module和ngx_epoll_module等。nginx具体使用何种事件处理模块,这依赖于具体的操作系统和编译选项。
  • phase handler: 此类型的模块也被直接称为handler模块。主要负责处理客户端请求并产生待响应内容,比如ngx_http_static_module模块,负责客户端的静态页面请求处理并将对应的磁盘文件准备为响应内容输出。
  • output filter: 也称为filter模块,主要是负责对输出的内容进行处理,可以对输出进行修改。例如,可以实现对输出的所有html页面增加预定义的footbar一类的工作,或者对输出的图片的URL进行替换之类的工作。
  • upstream: upstream模块实现反向代理的功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端。upstream模块是一种特殊的handler,只不过响应内容不是真正由自己产生的,而是从后端服务器上读取的。
  • load-balancer: 负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器。

转自http://ningg.top/nginx-series-principle/



Tags:Nginx   点击:()  评论:()
声明:本站部分内容来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
什么是Nginx?Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 什么是反向代理?反向代理(Reverse Proxy)方式是指以代理服务器来...【详细内容】
2020-07-06   Nginx  点击:(0)  评论:(0)  加入收藏
相对于Apache的同步IO模型,Nginx由于采用了NIO的缘故,性能上碾压前者。Nginx是轻量级的,占用的系统资源更少,天然支持高并发。今天我们就简单的讨论一下nginx的线程模型。注意不...【详细内容】
2020-07-01   Nginx  点击:(3)  评论:(0)  加入收藏
前面几周,讲过Nginx的日志配置:Nginx | 超详细!Nginx 日志配置实践,然后也讲了Nginx的进程模型,底层原理等:Nginx为什么快到根本停不下来?没看过的可以先看看(链接点击可跳转)。 例...【详细内容】
2020-06-26   Nginx  点击:(0)  评论:(0)  加入收藏
上一篇文章我写了 Nginx 的 11 个阶段,很多人都说太长了。这是出于文章完整性的考虑的,11 个阶段嘛,一次性说完就完事了。今天这篇文章比较短,看完没问题。过滤模块的位置之前我...【详细内容】
2020-06-25   Nginx  点击:(0)  评论:(0)  加入收藏
技术编辑:宗恩丨发自 SiFou Office作者:SegmentFault 思否报道转发链接: https://mp.weixin.qq.com/s/IRWTloT_nMSIezZiwUEGZg前言去年12月,俄罗斯警方搜查了商业服务器公司 N...【详细内容】
2020-06-21   Nginx  点击:(1)  评论:(0)  加入收藏
简单有效的防盗链手段场景如果做过个人站点的同学,可能会遇到别人盗用自己站点资源链接的情况,这就是盗链。说到盗链就要说一个 HTTP 协议的 头部,referer 头部。当其他网站通...【详细内容】
2020-06-15   Nginx  点击:(2)  评论:(0)  加入收藏
本文以api.mingongge.com.cn域名为测试对象进行统计,日志为crm.mingongge.com.cn和risk.mingongge.com.cn请求之和(此二者域名不具生产换环境统计意义),生产环境请根据具体需...【详细内容】
2020-06-12   Nginx  点击:(0)  评论:(0)  加入收藏
​一、设置CentOS7的yum源及EPEL yum源EPEL (Extra Packages for Enterprise Linux) 是由 Fedora Special Interest Group 为企业 Linux 创建、维护和管理的一个高质量附...【详细内容】
2020-06-08   Nginx  点击:(25)  评论:(0)  加入收藏
没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位...【详细内容】
2020-06-06   Nginx  点击:(4)  评论:(0)  加入收藏
1 简介Nginx是一个非常强大和流行的高性能Web服务器。本文讲解Nginx如何整合https并将http重定向到https。https相关文章如下:(1)Springboot整合https原来这么简单(2)HTTPS之密钥...【详细内容】
2020-06-04   Nginx  点击:(3)  评论:(0)  加入收藏
简述本文主要介绍Nginx负载均衡之upstream、server、location参数配置。NginxNginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源...【详细内容】
2020-06-04   Nginx  点击:(1)  评论:(0)  加入收藏
LVS简介LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集...【详细内容】
2020-06-04   Nginx  点击:(2)  评论:(0)  加入收藏
Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少(一个worker进程只占用10-12M内存),启动极快,高并发能力强,在互联网项目中广泛应用。 上图基本上说明了当下流...【详细内容】
2020-06-03   Nginx  点击:(0)  评论:(0)  加入收藏
前言Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型...【详细内容】
2020-06-02   Nginx  点击:(1)  评论:(0)  加入收藏
前言Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的...【详细内容】
2020-06-02   Nginx  点击:(1)  评论:(0)  加入收藏
相信很多小伙伴都见过一些商业产品中的url接口响应时间,实时汇总显示功能。可以理解为web接口的慢查询,与sql的慢查询有异曲同工之妙,但是想做却无从入手不知道怎么实现此功能,...【详细内容】
2020-05-29   Nginx  点击:(4)  评论:(0)  加入收藏
Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务...【详细内容】
2020-05-22   Nginx  点击:(5)  评论:(0)  加入收藏
Nginx服务器是一款高性能的服务器,之前部署网站就使用了它进行反向代理,这次就好好总结Nginx相关的特性与使用。 01 前言Nginx服务器是Web服务器,也就是我们平时用来提供Web服...【详细内容】
2020-05-22   Nginx  点击:(4)  评论:(0)  加入收藏
本文主要帮助大家熟悉 Nginx 有哪些应用场景、Nginx 特点和架构模型以及相关流程、Nginx 定制化开发的几种模块分类。 本文将围绕如下几个部分进行讲解: Nginx 简介及特点 Ng...【详细内容】
2020-05-20   Nginx  点击:(5)  评论:(0)  加入收藏
1.nginx的编译安装#1.安装Nginx所依赖的库文件或开发包yum install gcc redhat-rpm-config libxslt-devel gd-devel perl-ExtUtils-Embed geoip-devel gperftools-devel pcr...【详细内容】
2020-05-19   Nginx  点击:(2)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条