百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Nginx为什么快到根本停不下来?

off999 2025-02-09 13:42 50 浏览 0 评论

Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。本文从底层原理分析 Nginx 为什么这么快!

Nginx 的进程模型


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

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


思考:

  • 请求是连接到 Nginx,Master 进程负责处理和转发?
  • 如何选定哪个 Worker 进程处理请求?请求的处理结果,是否还要经过 Master 进程?



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

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

Nginx 高性能、高并发

Nginx 为什么拥有高性能并且能够支撑高并发?

Nginx 的事件处理模型

Request:Nginx 中 HTTP 请求。

基本的 HTTP Web Server 工作模式:


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:负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器。

常见问题剖析

Nginx vs Apache

Nginx:


Apache:

Nginx 最大连接数

基础背景:


因此,Nginx 的最大连接数:


思考:


HTTP 请求和响应

HTTP 请求:


HTTP 响应:


IO 模型

处理多个请求时,可以采用:IO 多路复用或者阻塞 IO+多线程:


IO 多路复用和多线程的适用场景?


select/poll 和 epoll 比较如下:

详细内容,参考:

https://www.cnblogs.com/wiessharling/p/4106295.html

select/poll 系统调用:

// select 系统调用

int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);

// poll 系统调用

int poll(struct pollfd fds[], nfds_t nfds, int timeout);

select:


poll:


epoll,event 事件驱动:


select,poll,epoll:

Nginx 的并发处理能力

关于 Nginx 的并发处理能力:并发连接数,一般优化后,峰值能保持在 1~3w 左右。(内存和 CPU 核心数不同,会有进一步优化空间)

相关推荐

手机照片删除恢复软件免费版

手机照片误删怎么办?在我们日常生活中经常会用到截屏或者相机,我们保存有意义的图片的同时也会留下许多垃圾图片,时间长了,再想清理很容易就会误删手机照片,那么手机照片误删该怎么办呢?今天就给大家分享几个找...

如何在国内使用gpt(如何在国内使用推特)

需要具备以下两个条件,才能使用gpt35国内版:1.购买相关许可证:gpt35国内版是需要购买相应的许可证才能使用的,需要联系属于该软件产品的销售方,获取合法的许可证。2.安装环境的配备:gpt3...

台式电脑怎么连接网络宽带(台式电脑怎样连接宽带连接)
  • 台式电脑怎么连接网络宽带(台式电脑怎样连接宽带连接)
  • 台式电脑怎么连接网络宽带(台式电脑怎样连接宽带连接)
  • 台式电脑怎么连接网络宽带(台式电脑怎样连接宽带连接)
  • 台式电脑怎么连接网络宽带(台式电脑怎样连接宽带连接)
google加速器(google加速器官网)

需要加速器的。手机谷歌浏览器需要加速器。要运行谷歌浏览器还需要在手机上下载安装一个加速器。谷歌浏览器是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit,目标是提升...

windows7下如何分区(win7怎么系统分区)

按照以下步骤进行操作:1.确定您的电脑已经安装Windows7操作系统,并且至少有一个硬盘分区。2.打开“计算机管理”工具。在Windows7中,您可以通过打开“开始菜单”,在搜索框中输入“计...

android windows7下载(安卓安装win7)

1、在电脑桌面上找到电脑的控制面板,点击进入控制面板;2、点击控制面板右上角的“查看方式”下拉菜单中选择“类别”选项;3、接着点击“时钟,语言和区域”选项;4、单击语言下方的“添加语言”;5、左键单击...

华为路由器设置步骤图解(华为路由器用什么设置)

华为路由器设置无线网络方法:【开启路由器的无线功能】1、进入路由器:打开浏览器,在地址栏输入192.168.1.1(一般路由器地址是这个或者查看路由器背面的登录信息)进路由-输入用户名,密码,(默认...

怎么恢复已删除文件(怎样恢复已删文件)

1、首先打开电脑管家工具箱。找到“文件恢复”工具。2、点击【恢复被删除的文件】并开始恢复3、选择要恢复的文件和目录所在的位置4、耐心等待扫描结果,整个过程受磁盘大小影响5、选择想要恢复的...

电脑桌面设置密码(电脑桌面设置密码不让别人乱开)
电脑桌面设置密码(电脑桌面设置密码不让别人乱开)

第一步点击电脑左下角的开始,选择设置。第二步选择账户。第三步在左侧选择登录选项,点击密码下面的添加,即可创建密码了。在钉钉电脑版中,是不能直接设置桌面密码的。不过,你可以通过设置电脑锁屏来保护个人隐私。具体步骤如下:1.打开电脑的“设...

2025-12-23 19:51 off999

破解游戏平台(破解游戏平台大全)

破解的steamvr游戏,你可以去虎虎VR下载,他们都是免费的。貌似是国外搬运的。是非常有可能会会遭到封禁的,平台不鼓励这种东西,只要一举报马上就会疯。

显卡驱动更新不了怎么办(显卡驱动一直更新失败)

第一种:解除BIOS限制有些显卡型号会在BIOS上面限制显卡驱动的更新,需要取消其限制才可以更新显卡驱动。第一步:重启电脑,在重启的过程中按住DEL键,进入BIOS界面。第二步:在BIOS界面中,找到...

win10系统怎么更新到最新版本

1、点击打开开始菜单,从左边找到【设置】2、打开设置,点击下面的【更新和恢复】,执行系统更新检查。3、打开Windows更新,点下面的【高级选项】4、进入高级选项找到【选择预览版的安装方式】,更改更新...

怎么给u盘单个文件加密(如何对u盘里面的单个文件进行加密)

可以使用加密软件对U盘文件进行受控加密,可以加密单个文件,也可以批量加密文件。通过用户身份认证和计算机认证(可选)的双重认证方式,确保只有特定的人员才能使用该U盘。设定密码、密保的最多尝试次数,超过则...

怎么换手机密码(怎么换手机密码6位数)

1、打开手机主屏幕然后进入【设置】功能;2、然后再选中设置里面进入【密码】;3、之后需要输入一次旧密码进入密码锁定页面;4、然后在密码页面选择【更改密码】功能;5、然后在更改密码页面输入旧密码;6、旧...

windows10设备管理器在哪(window10设备管理器在哪个位置)

1.没有其他设置2.因为Windows10的设备管理器是一个用于管理计算机硬件设备的工具,它主要用于查看和更新设备驱动程序,以及解决设备冲突等问题。它的功能和选项是经过精心设计和筛选的,以提供最...

取消回复欢迎 发表评论: