Nginx架构模型

Nginx架构及配置详解 概述 Nginx采用C进行编写,是俄罗斯程序员开发的一款轻量级的可构建Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器的软件, Nginx服务器是一个高性能的HTTP和反向代理web服务器,同时也可提供了IMAP/POP3/SMTP服务。nginx常用作跑静态和做负载反向代理,动态php交给apache处理,因后者比较稳定,jsp交给tomcat、resin或jboss。n...... 阅读详情

架构模型

nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。在调试的时候可以手动地关掉后台模式,让nginx在前台运行,并且通过配置让nginx取消master进程,从而可以使nginx以单进程方式运行。

另外,nginx是以多进程的方式来工作的,当然nginx也是支持多线程的方式的,只是我们主流的方式还是多进程的方式,也是nginx的默认方式。nginx采用多进程的方式有诸多好处。

master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。而基本的网络事件,则是放在worker进程中来处理了。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。

worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致,这里面的原因与nginx的进程模型以及事件处理模型是分不开的。nginx的进程模型,可以由下图来表示:
这里写图片描述

nginx为了更好的利用多核特性,提供了cpu亲缘性的绑定选项,我们可以将某一个进程绑定在某一个核上,这样就不会因为进程的切换带来cache的失效。

Worker处理请求

  • worker进程之间是平等的,每个进程,处理请求的机会也是一样的。当我们提供80端口的http服务时,一个连接请求过来,每个进程都有可能处理这个连接。
  • 首先,每个worker进程都是从master进程fork过来,在master进程里面,先建立好需要listen的socket(listenfd)之后,然后再fork出多个worker进程。
  • 所有worker进程的listenfd会在新连接到来时变得可读,为保证只有一个进程处理该连接,所有worker进程在注册listenfd读事件前抢accept_mutex,抢到互斥锁的那个进程注册listenfd读事件,在读事件里调用accept接受该连接。
  • 当一个worker进程在accept这个连接之后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接,这样一个完整的请求就是这样的了。

我们可以看到,一个请求,完全由worker进程来处理,而且只在一个worker进程中处理。

虽然每个worker里面只有一个主线程,但nginx采用了异步非阻塞的方式来处理请求,具体到系统调用就是像select/poll/epoll/kqueue这样的系统调用。它们提供了一种机制,让你可以同时监控多个事件,调用他们是阻塞的,但可以设置超时时间,在超时时间之内,如果有事件准备好了,就返回。这种机制正好解决了我们上面的两个问题,拿epoll为例(在后面的例子中,我们多以epoll为例子,以代表这一类函数),当事件没准备好时,放到epoll里面,事件准备好了,我们就去读写,当读写返回EAGAIN时,我们将它再次加入到epoll里面。这样,只要有事件准备好了,我们就去处理它,只有当所有事件都没准备好时,才在epoll里面等着。这样,我们就可以并发处理大量的并发了,当然,这里的并发请求,是指未处理完的请求,线程只有一个,所以同时能处理的请求当然只有一个了,只是在请求间进行不断地切换而已,切换也是因为异步事件未准备好,而主动让出的。这里的切换是没有任何代价,你可以理解为循环处理多个准备好的事件,事实上就是这样的。

与多线程相比,这种事件处理方式是有很大的优势的,不需要创建线程,每个请求占用的内存也很少,没有上下文切换,事件处理非常的轻量级。并发数再多也不会导致无谓的资源浪费(上下文切换)。

linux网络通讯架构实战篇【02、nginx整体结构、进程模型】 目录一:nginx的整体结构nginx进程模型调整worker进程数量二:nginx进程模型细说站在多进程,多线程的角度思考nginx的有点: 一:nginx的整体结构 master进程和worker进程概览(父子关系),启动nginx,看到了一个master进程,一个worker进程 这里的root 和nobody表示进程所属的用户id,而拥有root权限的进程是linux中具有最高权限的进程, nobody同样也是属于系统用户,但是他的权限会比较低,那么worker进程的权限也会比较低,这样的好. 阅读详情

相关推荐

Surface Pro 4/5/6/7保姆级黑苹果安装:从Windows分区到OC引导配置全流程(含EFI文件替换避坑)

本文详细介绍了在Surface Pro 4/5/6/7上安装黑苹果的全流程,包括Windows分区、OC引导配置和EFI文件替换等关键步骤。通过实战经验分享,帮助用户避开常见陷阱,实现Windows与macOS双系统完美共存,特别适合对黑苹果安装感兴趣的Surface Pro用户。

weixin_30300225的博客 1370

Nginx架构模型及常用配置

Nginx是俄罗斯人编写的十分轻量级的、高性能的HTTP服务器和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。Nginx的特点支持5万高并发、内存消耗少。Nginx在架构中的作用1)网关—面向客户的总入口2)虚拟主机—为不同域名(IP)、端口提供服务3)路由—使用反向代理,整合后续服务为一个完整业务4)静态服务器—发布前端html/css/js/image等5)负载均衡服务器—使用upstream,负载多个tomcat正向代理。.........

不才不才不不才的博客 3063

RU.EXE实用指南:从基础操作到高级调试技巧

本文是RU.EXE(RW Everything)的实用指南,详细介绍了这款硬件调试工具从基础操作到高级技巧的全过程。文章阐述了RU.EXE作为直接读写硬件寄存器、内存和PCI配置空间的强大工具,如何帮助硬件工程师和开发人员高效进行底层系统调试与故障排查,并强调了安全操作的重要性。

weixin_29228203的博客 278

1.Nginx服务架构

0. 缓存索引重建进程:在Nginx启动一段时间后由主进程生成,在缓存元数据重建完后自动退出,其主要工作是根据磁盘上缓存文件在内存中建立索引元数据库。位置:所有固定模块源码放在编译目录下的src目录中,一共分为core、event、http、mail、misc、os 6个目录。0. 缓存索引管理进程:一般存在于主进程整个生命周期,负责对缓存索引进行管理,其主要功能是更新索引元数据库。> 不中断服务,实现平滑升级,升级失败进行回滚处理。> 接收外界指令:重启、升级、退出服务器等。

m0_62950962的博客 1163

Grok-1.5+Ollama企业级本地化部署与合规实践指南

本文详细介绍了Grok-1.5+Ollama企业级本地化部署与合规实践指南,重点分析了本地化部署的成本优势和数据主权保障。通过RTX 4090显卡的硬件选型、Ubuntu 22.04系统优化及部署流程中的关键陷阱规避,为企业提供了高效、安全的AI模型部署方案。特别适合金融、医疗等敏感行业。

weixin_29094539的博客 182

基于IDEA与Mill构建Windows下的Chisel开发环境——香山处理器源码解析实战

本文详细指导如何在Windows系统下使用IDEA集成开发环境和Mill构建工具搭建Chisel开发环境,并以香山处理器源码为实战案例进行解析。内容涵盖环境准备、源码获取、工程构建、IDEA配置优化及代码阅读技巧,帮助开发者高效学习硬件设计语言。

a1b2c3d的博客 717

nginx 模块架构介绍

nginx架构介绍 Nginx 的代码是由一个 核心 和一系列的 模块 组成。 核心 核心的功能如下: 主要用于提供 WebServer 的基本功能; 实现 Web 和 Mail 反向代理的功能; 还用于启用网络协议; 创建必要的运行时环境以及确保不同的模块之间平滑地进行交互。 模块 大多跟协议相关的功能和应用特有的功能都是由 Nginx 的模块实现的。 这些功能模块大致可以分为:事件模块、阶段性...

王道长的技术博客 4034

基因家族快速鉴定指南:Windows平台下的HMMER实战解析

本文详细解析了在Windows平台下使用HMMER工具进行基因家族快速鉴定的完整实战流程。通过手把手指导,从软件获取、数据准备到模型构建与序列搜索,帮助生物信息学新手无需Linux环境,即可高效完成bZIP转录因子等家族的鉴定工作,大幅降低分析门槛。

weixin_29255731的博客 459

Nginx 进程模型概述

本文介绍了 Nginx 的 master-worker 进程模型,以及一些相关概念。

阿菇kinoko 1575

别再只会用串口助手了!手把手教你用手机App调试HC-05蓝牙模块(STM32F103实战)

本文详细介绍了如何利用手机App调试HC-05蓝牙模块与STM32F103的无线连接,突破传统串口助手的限制。通过实战指南,开发者可以掌握移动性测试、实时监控和快速验证等高效调试技巧,优化蓝牙透传的稳定性和性能。

weixin_33670786的博客 428

Jasper Report使用JSON数据源创建报表

最近在做一个项目小功能,表单结案要生成PDF报表。 起初,想用HTML模板(art-template模板引擎)编写,利用浏览器的打印功能保存成pdf文件下载。但是HTML编写好的模板,页码、页眉、页脚设置有坑,表单内容中的表格较多,表格不能设置跨页,导致跨页的表格内容与页眉重叠,没能解决这个问题。 于是,转战研究Jasper report生成报表,用更加专业的报表生成工具来做。刚开始,也是跌跌撞撞,遇到了很多问题,因为觉得没有退路了,必须要用这个搞出来,所以就硬着头皮去找各种资料。 主要使用的json

xiaogege2012的专栏 3319

nginx架构模型分析

一、Nginx架构 Nginx由内核和模块组成,从官方文档http://nginx.org/en/docs/下的Modules reference可以看到一些比较重要的模块,一般分为核心、基础模块以及第三方模块。 第三方模块意味着你也可以按照nginx标准去开发符合自己业务的模块插件。 核心主要用于提供Web Server的基本功能,以及Web和Mail反向代理的功能;还用于启用网络协议,创建必...

weixin_33910434的博客 162

STM32CubeIDE入坑指南

一 前言 在科技日新月异的今天,作为从事效率为先的苦逼 IT 行业,秉承着我不入地狱谁入地狱的伟大革命精神,我决定再一次做第一个吃螃蟹的人,通过自身的入坑过程,为大家测试STM32CubeIDE这款新式工具。(其实是为了我能省点时间,快点做完项目,多挣点钱买几瓶肾气丸) 二 看一看别人是如何入坑的 二 手把手带你入坑 三 相关资料 ...

CH的博客 1万+

菜鸟nginx源码剖析架构篇(二) nginx进程模型

nginx采用的是多进程模型,典型的master-worker方式,采用一个master process(监控进程,也叫做主进程)和多个woker process(工作进程)的设计方式,此外,还有1个可选的chache manager和 1 个可选的cache loader进程。

@Echo· 个人技术笔记 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Nginx----IO模型及架构流程概述

按说暮春时节,草长莺飞,带上心爱的姑娘或者家人出去踏踏青、赏赏花最合适不过,但一场接一场的大雪,下得人心生烦闷,每日早起都要考虑时宜穿秋裤还是时宜不穿,费脑又耗时,关键是我烧烤架都备好了,寒什么也不能寒了一颗吃货的心呢!早晨起床上班,在小区看到一车将垃圾桶怼到墙上,我想他也应该是在用另一种方式表达对这差劲天气的不满:(

袁伏彪 —— 共享,共赢 6024

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

初探Nginx架构之进程模型与事件处理机制

from http://blog.youkuaiyun.com/yankai0219/article/details/8018275 来自yankai0219 文章内容: 0.序 1.概述 2.Nginx的进程模型 3.Nginx的事件处理机制    3.1基本知识:    3.2网络事件的事件处理机制    3.3通过几个问题,进一步理解Nginx的网络事

spivic的专栏 2148

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Nginx 为什么性能这么好?从 I/O 模型与架构设计看本质

维度关键设计优势I/O 模型epoll + 异步非阻塞支持百万级连接,极低 CPU 占用线程模型单线程 + 事件驱动避免锁竞争、切换开销架构模块化 + 内存池 + 零拷贝极致性能优化,灵活扩展异步能力支持 HTTP/2、多 upstream、异步 DNS高并发下依然平滑响应Nginx 并非魔法,背后是工程极致优化与架构哲学的体现。通过:事件驱动模型异步 I/O模块化架构内存高效管理零拷贝技术Nginx 成就了自己“超高性能 Web 服务器”的地位。

2303_78594540的博客 1216

Nginx高并发核心依赖何架构模型?

Nginx的高并发核心架构模型主要包括:1)负载均衡与服务器集群实现请求分发;2)高速传输通道与数据缓存机制提升响应速度;3)事件驱动模型高效处理并发请求;4)数据库与缓存分离设计保障性能。关键技术涉及负载均衡算法优化、数据传输协议改进、性能监控调优等。该架构通过多维度技术整合,显著提升了系统吞吐量和稳定性,为Web服务提供高性能并发处理能力。未来将持续优化演进。

2501_90410679的博客 39

Nginx的进程模型详解:高性能架构的奥秘

Nginx作为一种高性能的Web服务器和反向代理,其核心优势在于高效的进程模型设计。本文将深入剖析Nginx的进程模型,包括主进程(Master Process)、工作进程(Worker Process)的分工与协作机制,以及异步非阻塞I/O的处理方式。通过详细的架构分析和示例演示,帮助读者理解Nginx在高并发场景中的强大性能,以及如何优化和调试其进程模型来适应不同的业务需求。

学而时习之,不亦说乎?温故而知新,可以为师矣! 1391

文章12:初探Nginx架构之进程模型与事件处理机制

欢迎大家转载,转载请注明出处http://blog.youkuaiyun.com/yankai0219/article/details/8018275 来自yankai0219 文章内容: 0.序 1.概述 2.Nginx的进程模型 3.Nginx的事件处理机制    3.1基本知识:    3.2网络事件的事件处理机制    3.3通过几个问题,进一步理解Nginx的网络事

www.keything.net 1万+

IO模型及Nginx架构流程概述

文章目录第一章 概述第二章 五种IO 网络模型1. 阻塞IO(blocking I/O)2. 非阻塞IO(nonblocking I/O)3. 多路复用IO(I/O multiplexing (select、poll、epoll))4. 信号驱动IO(signal driven I/O (SIGIO))5. 异步IO(asynchronous I/O)第三章 汇总第四章 libevent1. li...

王道长的技术博客 438

Java架构师—Nginx的进程模型

Nginx的进程模型; Nginx处理Web请求机制; 同步与异步,阻塞与非阻塞。

qq_36473058的博客 260

Nginx的进程模型:Master-Worker架构解析

Nginx作为高性能Web服务器,其进程模型是其成功的关键之一。本文将详细地解析Nginx所采用的Master-Worker架构。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 5566

Nginx服务架构/事件驱动模型

模块化 模块化是指: 以功能块为单位进行程序设计,一个模块就是一个功能块,应该只负责一个功能,遵循“单一职责原则”的设计模式。 自定向下分解、逐步求精原则 模块内部高内聚、模块之间的依赖关系低耦合原则。 模块化设计支持分布式开发,可以使得nginx灵活的扩展和便捷的升级。 Nginx模块化结构 分为: 核心模块,指源码包中的模块,src文件夹下,包括进程管理、权限控制、错误日志记录等。 标准http模块,编译后包含的模块,使得nginx支持基本http功能 可选http模块,用于扩展标准的http功能

李思苇 714

nginx架构-进程模型事件模型

众所周知,nginx性能高,而nginx的高性能与其架构是分不开的。那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧。 nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。我们也可以手动地关掉后台模式,让nginx在前台运行,并且通过配置让nginx取消master进程,从而可以使nginx以单进程方

影音视频技术 1055
上一篇: Apache Spark入门级摘要
下一篇: 支付宝的高可用与容灾架构演进
奋起直追CDS
博客等级 码龄11年 57粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值