nginx原理与底层架构

master 和 worker进程

当 Nginx 启动时,会生成主进程(master)和工作进程(worker)。

[root@nginx ~]# ps -ef|grep nginx
root       6324      1  0 09:06 ?        00:00:00 nginx: master process /usr/local/nginx-1.12.2/sbin/nginx
nobody     6325   6324  0 09:06 ?        00:00:00 nginx: worker process

在这里插入图片描述

worker如何进行工作的

一个 master 和多个 woker 进程的好处:
(1)可以实现 热部署(nginx –s reload )
(2)每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的,
继续进行争抢,实现请求过程,不会造成服务中断

  • 热更新也是worker或模块化的能力吗?其他的所谓热部署、热更新也是同样的原理?

设置多少个 woker 合适?
worker 数和服务器的 cpu 数相等是最为适宜的。

  • 这个原理看起来类似配置线程数。大概就是想正好能完全利用cpu?那如果是多线程、超线程的情况下,应该按线程数还是cpu数分配?

连接数 worker_connection

第一个:发送请求,占用了 woker 的几个连接数?
答案:2 或者 4 个
第二个:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的最大并发数是多少?

  • 普通的静态访问最大并发数是: worker_connections * worker_processes /2。
  • 而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections *
    worker_processes/4。

事件驱动模型

Nginx 的事件驱动模型由事件收集器、发送器和处理器三部分基本单元组成。

事件收集器:收集 worker 进程的各种 IO 请求
事件发送器:将 IO 事件发送到事件处理器
事件处理器:处理各种事件的响应工作
Nginx 事件驱动架构是基于异步及非阻塞的方式,这种设计允许 Nginx 同时处理多个网络请求。

当一个客户端发起请求时,Nginx 会将该请求交给一个工作进程,由工作进程负责处理请求。工作进程采用异步方式处理请求,每个请求在一个单独的工作进程中处理,这样就不会因为一个请求的阻塞而影响其他请求的处理。因些,它可以同时处理多个客户端请求,从而提高了并发处理能力。
非阻塞IO
Nginx 在处理请求时采用了非阻塞 I/O 操作,这意味着它不会在等待 I/O 操作完成时阻塞进程。通过使用非阻塞 I/O,Nginx 可以同时处理多个 I/O 操作,从而提高了整体的处理能力。

如前面的图,事件发送器会将事件放入一个类似待处理的列表中,然后采用非非阻塞 I/O 方式来调用事件处理器来处理这个请求。

这种处理模式我们又将其称为“多路复用 I/O”,最常见的有括这三种:select 模型、poll模型、epoll 模型。

  • 学学事件驱动再来看看

内存管理

Nginx 使用了强大内存池技术来管理内存,内存池中的内存块是预先分配的,避免了频繁的内存分配和释放操作,从而减少了内存分配和释放的开销,这样可以使 Nginx 在处理大量并发连接时更加高效。

模块化设计

Nginx 的模块化设计使得它能够根据需求选择和加载不同的模块,以支持各种功能,如日志记录、身份验证等。这种设计灵活性高,便于扩展和维护。

Nginx 的模块主要包括核心模块、标准HTTP模块、可选HTTP模块、邮件服务模块和第三方模块等。这些模块通过事件驱动模型和非阻塞I/O等技术手段,实现了高效地处理大量的并发连接,支持百万级别的并发访问。

Nginx 这种模块化设计使得它可以根据不同的需求去加载不同的模块,从而去支持各种不同的功能,这个设计非常灵活,且便于扩展与维护。

核心模块是Nginx的基础部分,主要实现了底层的自身的一部分通讯协议,也为其他的一些模块和Nginx的进程等内容提供了一个运行时的环境。标准HTTP模块是核心中的一部分,负责定义除配置模块之外的其他模块。可选HTTP模块则提供了更多高级功能,如负载均衡、SSL加密等。邮件服务模块则与邮件相关。第三方模块则是一些由第三方提供的模块,可以扩展Nginx的功能。

总的来说,Nginx 的模块化设计是其高性能、高并发能力的关键因素之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值