性能测试-Nginx

本文详细介绍了Nginx的负载均衡机制(轮询和ip_hash),以及如何通过测试验证其效果。此外,文章还探讨了Nginx的瓶颈分析,包括资源占用、请求堆积,以及调优方向如工作进程数量、事件模型、后端连接超时、gzip压缩和Expires缓存。
摘要由CSDN通过智能技术生成

一、Nginx测试

1、负载均衡

轮询机制(默认)

雨露均沾,两个请求 --> 后端两台服务器, 每台服务器负责处理一个请求


权重

weight 参数是权重,示例中的意思说明:如果nginx收到4个请求,其中3个请求交割192.168.1.110这台机器进行处理。


        upstream myapp1 {        

              server 192.168.1.110:5000 weight=3;        

              server 192.168.1.109:5000;    

          }
    

 

ip_hash机制

同样的客户端ip,多次请求分配给同一台服务器
        upstream myapp1 {        

           ip_hash;        

           server 192.168.1.110:5000;        
           server 192.168.1

    

2、测试

2.1 集群有效性测试(功能测试)——负载均衡是否生效,是否按策略将讲求分配到不同服务器
    方式一:应用日志分析
        此种方式要求后端开发针对请求有记录日志
        看后端应用系统 有没有对应的处理记录
    方式二:服务器网络监控
        通过网络抓包分析请求
        tcpdump 抓包
            centos安装: yum install tcpdump
            tcpdump -i any
                所有网卡中捕获数据包
            tcpdump -i eth0
                指定网卡中捕获数据包
            tcpdump src 192.168.174.2
                指定IP来源
            tcpdump port 5000
                指定端口
2.2 集群容错测试(功能测试)
    集群节点出现故障,无法提供正常服务(停掉某个服务,看其他服务是否正常处理请求)
    检查 整个集群是否有问题【错误率】
2.3 拓展性测试(性能测试)
    模拟生产场景: 9月份 我们针对 双11 高峰期做性能测试,计算需要多少服务器生产环境的机器配置资源配置,要根据实际情况去增减
    生产环境 动态增加机器
    不做其他的系统优化,只是模拟机器增加,检查是否带来性能提升.109:5000;  

二、Nginx 瓶颈分析

1、资源占用:CPU、内容、网络、磁盘

2、请求是否堆积

active:活跃的连接 总数
read:nginx 接受这个请求读取 用户请求信息
wait:nginx 转发请求给后端应用服务器等待具体的业务结果,大量wait ,后端可能处理太慢了
write:nginx已经拿到请求结果回复给客户端,nginx 写响应内容太慢

关系:active=reading + writing + waiting


在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的。如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中????

三、调优方向

1、Nginx 工作进程数量

Nginx工作进程数

nginx 开启多个进程:和内存打交道,没有负责业务,请求处理很快,所以采用的是多进程

java 和mysql 是开启多线程:因为处理过程中有大量等待时间(和磁盘打交道),线程消耗资源少,所以选择了线程

进程数量work_processs CPU内核数;

Nginx运行CPU绑定

worker_cpu_affinity 0001 0010 0100 1000
CPU 执行代码: 4个线程 任务代码指令 都交给一个CPU去运行

Nginx最大打开文件数
    操作系统层面: 文件操作、网络操作、进程 --- 文件描述符
    worker_rlimit_nofile 65535;
    这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致,如果配置过低,nginx 无法跑满效率
    注:文件资源限制的配置可以在/etc/security/limits.conf设置,针对root/user等各个用户或者*代表所有用户来设置。


Nginx事件处理模型
    events {  

        use epoll;  

        worker_connections 65535;  

         multi_accept on;

    }
    work_connections是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections。
    实际我们填入一个65535,足够了,这些都算并发值,一个网站的并发达到这么大的数量,也算一个大站了!
    multi_accept 告诉nginx收到一个新连接通知后接受尽可能多的连接,默认是on,设置为on后,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处于休眠状态,设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,直到连接分配完毕,没有取得连接的继续休眠。当你的服务器连接数不多时,开启这个参数会让负载有一定的降低,但是当服务器的吞吐量很大时,为了效率,可以关闭这个参数

后端请求连接断开连接超时时间
    nginx 请求后端,如果迟迟得不到响应, nginx内部堆积大量请求
    主要目的是保护服务器资源,CPU,内存,控制连接数,因为建立连接也是需要消耗资源的


gzip 调优
    这个场景: 压缩静态文件,减少网络带宽占用
    使用gzip压缩功能,可能为我们节约带宽,加快传输速度,有更好的体验,也为我们节约成本,所以说这是一个重点
    gzip on;   #开启压缩功能
    gzip_min_length 1k :设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1K,如果小与1K可能会越压越大。
 
expires 缓存调优
    1. nginx  -- 把文件从 磁盘 加载到内存,缓存起来
    还可以作为一个 web 服务器 -- 部署静态的资源{html、图片....}直接返回 文件内容
    nginx 不仅仅只能做负载均衡
    2. nginx -- 主动在返回客户端的消息体,加上 客户端缓存的标记
    缓存,主要针对于图片,css,js等元素更改机会比较少的情况下使用,特别是图片,占用带宽大,我们完全可以设置图片在浏览器本地缓存365d,css,js,html可以缓存个10来天,这样用户第一次打开加载慢一点,第二次,就非常快了!缓存的时候,我们需要将需要缓存的拓展名列出来, Expires缓存配置在server字段里面
 

内核参数优化
    

nginx 调优:nginx调优-腾讯云开发者社区-腾讯云

nginx 监控:运维监控系统PIGOSS BSM 如何实现Nginx监控
nginx 学习:nginx-2-讲解与使用_nginx最大并发连接数-CSDN博客
nginx性能测试可以通过多种方法来进行。其中,优化linux内核参数是一种常用的方法。通过调整内核参数,可以使内核变得更为强大,从而提升nginx的性能。另外,优化nginx配置文件也是一种有效的方法。通过对nginx配置文件进行调整和优化,可以提高nginx的性能表现。此外,扩展服务器的CPU和内存也可以增强服务器的性能。通过增加服务器的CPU核心数和内存容量,可以使服务器更强大,进而提升nginx的性能。 关于nginx性能测试的详细信息,您可以参考《Testing the Performance of NGINX and NGINX Plus Web Servers》这篇文章。该文章提供了关于NGINXNGINX Plus Web服务器性能测试的详细信息,可以帮助您更好地了解和测试nginx的性能表现。 在进行性能测试时,还需要注意一些细节。例如,对于16核的服务器,不需要开启RPS特性,就可以将所有CPU核心利用起来,使网络达到极限。而对于32核的服务器,可能需要开启RPS特性。这是根据测试结果得出的结论。综上所述,通过合理的优化和测试,可以有效地提升nginx的性能表现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Nginx 性能、压测](https://blog.csdn.net/snake1900/article/details/121656135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Nginx 性能测试](https://blog.csdn.net/SkyChaserYu/article/details/108601789)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值