Nginx的性能分析与调优简介

news2025/2/12 21:58:58

Nginx的性能分析与调优简介

    • 一、Nginx的用途
    • 二、Nginx负载均衡策略介绍与调优
    • 三、其他调优方式简介
    • 四、Nginx的性能监控

一、Nginx的用途

‌Nginx是一种高性能的HTTP和反向代理服务器,最初作为HTTP服务器开发,主要用于服务静态内容如HTML文件、图像、视频等。与传统的Apache相比,Nginx在处理静态文件时表现出色,因为它采用了事件驱动的架构,能够处理大量的并发连接而不会消耗过多的资源。此外,Nginx还可以作为反向代理服务器,接收客户端请求并将其转发到后端服务器处理,从而提高系统的可用性和性能。‌

Nginx还具备强大的负载均衡功能,可以将客户端请求分发到多个后端服务器,支持多种负载均衡算法,如轮询、最少连接和IP哈希等,从而实现高可用性和扩展性。作为缓存服务器,Nginx可以缓存静态内容和动态生成的页面,减少对后端服务器的请求数量,提高网站的响应速度。

Nginx也属于一种Web中间件1,Nginx不管是在作为Web静态资源访问管理,或者作为动态的请求代理,性能都是非常高效的。当然Nginx有时候也会存在性能瓶颈,需要进行性能分析和调优以支持更高的并发处理能力。

二、Nginx负载均衡策略介绍与调优

在一般情况下,Web中间件最大的作用就是负责对请求进行分发,也就是我们常说的起到负载均衡的作用。当然负载均衡只是 Nginx的作用之一,Nginx常见的负载均衡策略一般包括轮询、指定权重(weight)、ip_hash、least_conn、fair、url_hash等六种。

其中默认执行的策略为轮询,fair和url_hash属于第三方策略,这两种策略不是Nginx自带支持的策略,需要安装第三方的插件来辅助支持。在不同的场景下,每一种策略的选择对系统的整体性能影响都非常大,一般建议根据实际场景和服务器配置来选择对应的负载均衡策略。

序号策略配置方式应用场景简而言之
1轮询(默认执行)如果在upstream中没有指定其他任何的策略时,Nginx会自动执行轮询转发策略,upstream中配置每台服务器的权重都一样,会按照顺序依次转发upstream中配置指定的服务器进行轮询,请求会按照接收到的顺序,依次轮询地转发给对应的服务器进行执行;Nginx能自动感知需要转发到的后端服务器是否挂掉,如果挂掉,Nginx会自动将那台挂掉的服务器从upstream中剔除平均转发请求
2指定权重通过在upstream配置中给相应的服务器指定weight权重参数来实现按照权重分发请求weight参数值的大小和请求转发比率成正比,该配置一般用于后端应用程序服务器硬件配置差异大而导致承受的访问压力不一样的情况按照指定权重比转发请求
3ip_hash通过在upstream配置ip_hash参数每个请求按原始访问ip的hash结果来进行请求转发,由于同一个ip的hash值肯定是不变的,这样每个固定客户端就会只访问一个后端应用程序服务器,该配置一般可解决多个应用程序服务器的session复制和同步的问题,因为同一个ip的请求都转发到了同一台服务器的应用程序上了,所以也就不会有session不同步的问题了。但是这可能会导致后端应用服务器的负载不均的情况,因为在这种策略下后端应用服务器收到的请求数肯定很难一样多按照ip_hash转发请求主要解决session不同步问题
4least_conn通过在upstream配置中增加least_conn配置Nginx在接收到请求后会把请求转发给连接数较少的后端应用程序服务器请求优先转发给连接数较少的服务器
5fairfair属于第三方策略,即不是Nginx本身自带的策略,需要安装对应的第三方插件fair是按照服务器端的响应时间来分配请求给后端应用程序服务器,响应时间短的优先分配响应时间短的优先分配
6url_hashurl_hash属于第三方策略,也是需要安装对应的第三方插件url_hash是按照访问的目标url的hash值来分配请求,使同一个url的请求转发到同一个后端应用程序服务器,请求的分发策略和ip_hash有点类似;在进行性能调优时,主要是适用对缓存命中进行调优,同一个资源(也就是同一个目标url地址)多次请求,可能会到达不同的后端应用程序服务器上,会导致不必要的多次下载。使用url_hash后,可以使得同一个目标url(也就是同一个资源请求)会到达同一台后端应用程序服务器,这样可以在服务端进行资源 缓存,再次收到请求后,就可以直接从缓存中读取了按照url_hash转发请求主要适用于缓存命中调优

使用轮询策略时,其他非必填的辅助参数
在这里插入图片描述

三、其他调优方式简介

序号调优方式应用场景备注
1进程数的配置调优可以配置worker进程数=CPU的核数或者CPU的核数的两倍,还可以将每一个worker进程绑定到不同的CPU核上,这样可以避免出现CPU的争抢Nginx服务启动后会包括两个重要的进程:(1)master进程:可以控制Nginx服务的启动、停止、重启、配置文件的重新加载。(2)worker进程处理用户请求信息,将收到的用户请求转发到后端应用服务器上。
2事件处理模型调优为了性能得到最优处理,Nginx的连接处理机制在不同的操作系统中一般会采用不同的I/O事件模型在Linux操作系统中,一般使用epoll的I/O多路复用模型;在FreeBSD操作系统中,使用kqueue 的I/O多路复用模型;在Solaris操作系统中,使用/dev/pool方式的 I/O多路复用模型;在Windows操作系统中,使用的icop模型。在实际使用Nginx时,我们也是需要根据不同的操作系统来选择事件处理模型
3客户端连接数调优配置Nginx单个进程允许的客户端最大连接数、配置Nginx worker进程可以打开的最大文件数
4文件传输性能调优可以通过修改在nginx.conf配置文件中参数配置进行调优,例如:sendfile、tcp_nopush、tcp_nodelay参数
5FastCGI配置调优Nginx本身并不支持对外部动态程序的直接调用或者解析,所有的外部编程语言编写的程序(比如Python、PHP)必须通过FastCGI接口才能调用,可以通过配置FastCGI相关参数进行调优FastCGI是一个传输快速可伸缩的、用于HTTP服务 器和动态脚本语言间通信的接口,它为所有Internet应用程 序提供了 高性能 , 而不受 Web服务器 API 的限制 。 包括Apache、Nginx在内的大多数Web服务都支持FastCGI,同时FastCGI也被许多脚本语言(例如Python、PHP等)所支持。

–补充
客户端连接数调优方式:
1、配置Nginx单个进程允许的客户端最大连接数:
可以修改Nginx中的nginx.conf配置文件中的配置

events #可以设置Nginx的工作模式以及连接数上限
 {
	 worker_connections 1024;
 }

2、配置Nginx worker进程可以打开的最大文件数:
可以修改Nginx中的nginx.conf配置文件中的配置
worker_processes 2;
worker_rlimit_nofile 2048; # 设置worker进程可以打开的文件数

四、Nginx的性能监控

Nginx自带了监控模块,但是需要在Nginx编译安装时指定安装监控模块。默认情况下是不会安装该监控模块的,需要指定的编译参数为–with-http_stub_status_module。

编译安装完成后,Nginx的配置文件nginx.conf中还是不会开启监控,需要在配置文件中增加如下配置,其中allow 192.168.1.102 代表允许访问监控页面的IP地址
在这里插入图片描述

修改完配置文件后,通过执行nginx-s reload来重新加载配置信息,然后通过访问http://nginx服务器IP地址:端口号/nginx_status 就可以进入监控页面了
在这里插入图片描述

参考书籍《软件性能测试、分析与调优实践之路》

wuu~~又是学到东西的一天!
给自己点个赞!!!
在这里插入图片描述


  1. Web中间件一般主要负责静态资源(也可以称作静态请求)的处理和动态请求的转发,而动态请求一般都是由应用中间件来进行处理的。 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2266328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

递归算法常见问题(Java)

问题:斐波那契数列,第1项和第2项都为1,后面每一项都为相邻的前俩项的和,求第n个数 解法:每一个数都为前俩个数之和,第1项和第2项都为1,所以写 方法f1(n)即为求第n个数,那么f1(n-1)为求第n-1个数&#xff0…

SpringBoot + HttpSession 自定义生成sessionId

SpringBoot HttpSession 自定义生成sessionId 业务场景实现方案 业务场景 最近在做用户登录过程中,由于默认ID是通过UUID创建的,缺乏足够的安全性,决定要自定义生成 sessionId。 实现方案 正常的获取session方法如下: HttpSe…

【流量、洪水数据下载】网站介绍和下载经验....不断更新!

EarthData 介绍 NASA:链接 数据下载 视频教程:Discover and Access Earth Science Data Using Earthdata Search 数据下载需要注册,已经被卡在邮箱验证上【2024-12-26】… Essential Climate Variables——【The Global Climate Observing System(GCOS) 介绍 其是支…

Pytorch | 利用SMI-FGRM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用I-FGSSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集SMI-FGRM介绍SMI-FGRM算法流程 SMI-FGRM代码实现SMI-FGRM算法实现攻击效果 代码汇总smifgrm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CI…

少儿编程在线培训系统:客户服务与学习支持

2.1 VUE技术 VUE它是由HTML代码,配上嵌入在HTML代码里面的Java代码组成的应用于服务器端的语言,使用VUE进行开发能够更加容易区分网页逻辑以及网页设计内容,让程序员开发思路更加清晰化,VUE在设计组件时,它是可以重用的…

流批一体向量化计算引擎 Flex 在蚂蚁的探索和实践

编者按:Flex是蚂蚁数据部自研的一款流批一体的向量化引擎,Flex是Fink和Velox的全称,也是Flexible的前缀,被赋予了灵活可插拔的寓意。本文将重点从向量化技术背景、Flex架构方案和未来规划三个方面展开论述。 作者介绍:…

upload-labs关卡记录11

先上传一个一句话木马试试,居然可以上传成功,复制图片链接,在另一个窗口打开: 会发现,我们明明上传的是shell.php,但是这里就是没有了php,这样我们在执行我们相关的语句的时候就无法执行了: 就…

WebRTC服务质量(08)- 重传机制(05) RTX机制

WebRTC服务质量(01)- Qos概述 WebRTC服务质量(02)- RTP协议 WebRTC服务质量(03)- RTCP协议 WebRTC服务质量(04)- 重传机制(01) RTX NACK概述 WebRTC服务质量(…

借助 obdiag,让 OceanBase 参数和变量的对比更简单

本文将介绍 obdiag 工具中参数对比和变量对比功能的适用场景和试用方法。​​​​​​​ obdiag 参数和变量对比功能的适用场景 参数对比功能适用场景 不同observer对于同一参数允许配置不同的值,实际生产环境中,用户可能因多种原因在不同observer上为同…

Net9解决Spire.Pdf替换文字后,文件格式乱掉解决方法

官方文档 https://www.e-iceblue.com/Tutorials/Spire.PDF/Program-Guide/Text/Find-and-replace-text-on-PDF-document-in-C.html C# 在 PDF 中查找替换文本 原文件如下图,替换第一行的新编码,把41230441044替换为41230441000 替换代码如下&#xff…

VBA技术资料MF246:将工作表中形状复制到WORD文档

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

一次医院RIS系统的升级

2020-03-11 目录 数据库升级... 1 数据结构升级... 1 系统配置... 2 WEB服务器准备... 3 启动ASP.NET State Service服务... 3 检查IIS. 4 发布站点... 4 添加应用程序池... 4 发布网站... 5 处理打印模板... 6 web.config的配置... 6 处理图片文件目录... 6 修改W…

显示 Windows 任务栏

显示 Windows 任务栏 1. 取消勾选自动隐藏任务栏2. 重启 Windows 资源管理器References 1. 取消勾选自动隐藏任务栏 Windows 任务栏具有自动隐藏功能,不使用时自动隐藏,使用时显示。 鼠标右键单击桌面上的空白区域,个性化 -> 任务栏。不…

【Unity3D】Jobs、Burst并行计算裁剪Texture3D物体

版本:Unity2019.4.0f1 PackageManager下载Burst插件(1.2.3版本) 利用如下代码,生成一个Texture3D资源,它只能脚本生成,是一个32*32*32的立方体,导出路径记得改下,不然报错。 using UnityEditor; using Uni…

轻量级安全云存储方案Hoodik

什么是 Hoodik ? Hoodik 是一款轻量级、安全且自托管的云存储解决方案。它采用 Rust 和 Vue 设计和构建,专注于端到端加密,保护您的数据免受窥探和黑客的侵害。Hoodik 支持文件上传和下载,让您可以轻松地与其他用户共享文件。简单…

[WASAPI]音频API:从Qt MultipleMedia走到WASAPI,相似与不同

[WASAPI] 从Qt MultipleMedia 来看WASAPI 最近在学习有关Windows上的音频驱动相关的知识,在正式开始说WASAPI之前,我想先说一说Qt的Multiple Media,为什么呢?因为Qt的MultipleMedia实际上是WASAPI的一层封装,它在是线…

Linux 大文件管理与 Hugging Face 模型下载实践:解决磁盘空间与大文件传输的全攻略20241226

Linux 大文件管理与 Hugging Face 模型下载实践:解决磁盘空间与大文件传输的全攻略 引言 在 Linux 系统中管理大文件是一项常见但不容忽视的任务,尤其是在处理复杂场景时,比如磁盘空间不足、断点续传下载模型文件、管理日志文件等。通过实际…

TOGAF之架构标准规范-业务架构

TOGAF标准规范中,业务架构阶段的主要工作是开发支持架构愿景的业务架构。 如上所示,业务架构(Business Architecture)在TOGAF标准规范中处于B阶段,该阶段的主要内容包括阶段目标、阶段输入、流程步骤、架构方法。 阶段…

aPaaS是什么?有何特点?以及aPaaS核心优势有哪些?

​aPaaS是什么? aPaaS,Application Platform as aService,应用程序平台即服务。国际知名咨询机构 Gartner 对aPaaS所下的定义是:“这是基于PaaS(平台即服务)的一种解决方案,支持应用程序在云端的开发、部署和运行&…

【网络分析工具】WireShark的使用(超详细)

网络分析工具——WireShark的使用 简介WireShark软件安装Wireshark 开始抓包示例WireShark抓包界面WireShark 主要分为这几个界面TCP包的具体内容Wireshark过滤器设置wireshark过滤器表达式的规则Wireshark抓包分析TCP三次握手Wireshark分析常用操作 简介 WireShark是非常流…