nginx的事件驱动模型

2024-08-24 16:18
文章标签 模型 nginx 事件驱动

本文主要是介绍nginx的事件驱动模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


nginx的事件驱动机制:
    事件发生源产生事件->事件收集器来收集分发事件(选择自己感兴趣的)->消费事件.

传统web服务器(例如apache)的事件驱动机制:
    当一个连接到来时候,事件驱动,建立连接.当连接建立以后直到关闭之前进程将退化成按顺序执行每个操作的批处理模式.每个请求的始终占据资源,无论是否进行数据传输.尤其是中途的阻塞,会造成资源的极大浪费.这种传统的web服务器常常把一个线程或者进程作为一个事件的消费者,在进程阻塞的时候会休眠,而休眠占用的资源第不到有效的利用,并且当有上百万连接时候,进程(线程)间频繁的切换将成为服务器的瓶颈.

传统web服务器的瓶颈原因:进程切换占用过多资源+进程睡眠浪费资源
nginx解决之道:单个进程+多阶段异步处理
    nginx采用单个或者几个进程(一般是cpu的数目)来处理事件,这样就不会由于进程间的频繁切换而造成服务器的瓶颈,
    nginx采用多阶段异步处理,这样就不会造成进程睡眠而产生的资源浪费.

nginx的事件驱动+多阶段异步处理机制:
    nginx完全采用事件驱动架构来处理业务,他不同于传统的事件驱动模型.他不会为单个消费事件去创建一个线程或进程,他只是把消费事件当作一个模块,只有收集分发器才会占用资源,他们会分发某个事件时候调用消费模块使用当前占用的进程资源.
nginx多阶段的划分方法:
  1.将阻塞方法根据触发事件划分成多个阶段
    第一阶段:将阻塞方法转换成非阻塞方法,第二阶段将处理返回结果.
  2.将阻塞方法根据时间划分成多个阶段
    如果阻塞方法没有对应的非阻塞方法,并且阻塞方法消耗的时间是可测并且可划分的,那么->第一阶段分解阻塞方法划分成多个极短时间的阻塞方法,第二个阶段处理结果,并在一定情况下再次调用第一步.
  3.对于空转的情况,使用定时器解决.
  4.对于无法将阻塞方法划分的情况,只能将阻塞调用放在一个独立的进程,等到阻塞方法调用完成后在通知原进程.(慎用,这条违反了nginx的设计规则)

多阶段请求异步连接提高了网络性能,降低了请求延时.
(web影响并发的因素:睡眠+线程(进程)切换)
传统web与nginx的比较:
    传统web服务器的每个事件消费者独占一个进程(线程)资源,这种情况对于用户规模较小的情况来说,用户响应速度快,但是当并发规模达到数十万上百万的时候,由于线程(进程)数目过多,会频繁的切换,而且当线程阻塞的时候会进行睡眠,也会造成资源的浪费,这样服务器就会产生瓶颈.
    nginx服务器采用的事件驱动机制不同,他不会为每个消费事件创建一个进程或线程,这样就不会产生由于进程间频繁切换占用cpu而产生的瓶颈,而且nginx不会让事件阻塞,即采用无阻塞事件驱动模型,这样就不会因为事件阻塞使进程睡眠而造成的资源浪费.
nginx将一个请求划分成多个阶段异步处理,每个阶段仅仅完成一个请求中的一部分,当本阶段任务完成后进入下一阶段.等待事件发生不是阻塞的等待,等待事件发生时候内核通知,在等待阶段继续处理其他任务.


nginx优点:
  对阶段异步处理+事件驱动机制可以是并发达到百万以上,极大的提高服务器的响应速度,增加了用户体验.

这篇关于nginx的事件驱动模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102979

相关文章

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Nginx 413修改上传文件大小限制的方法详解

《Nginx413修改上传文件大小限制的方法详解》在使用Nginx作为Web服务器时,有时会遇到客户端尝试上传大文件时返回​​413RequestEntityTooLarge​​... 目录1. 理解 ​​413 Request Entity Too Large​​ 错误2. 修改 Nginx 配置2.1