jmeter 性能测试结果分析

article/2025/9/29 3:19:50

一、性能测试的概念&意义

1、概念

       通过技术的手段模拟大量用户同时访问被测应用,观察、记录和分析系统的各项性能指标的过程。

2、目的

评估系统的性能瓶颈,预测系统的最大用户负载能力

3、意义

      能够有效评估系统的性能指标,用于系统的性能评估 2)能够识别系统的性能瓶颈,协助性能调优 3)能够指导突发流量承载方案的制定 4)能够用于系统运维成本的预算

二、性能指标理解

1、指标分析

(1)响应时间

用户通过客户端向服务端发出请求的时间为:T1

服务端接收到请求,处理该请求的时间为:T2

服务端返回数据给客户端时间为:T3

客户端接收到响应数据,处理数据呈现给用户时间为:T4

2响应时间系统视角

系统的响应时间 Ts= T1+T2+T3

该时间没有包括客户端对数据处理并呈现的时间 T4

3响应时间用户视角

用户眼中的的响应时间 Tu = T1+T2+T3+T4

用户通过客户端发出请求到客户端展现请求结果,这个时间越短越好

4响应时间服务器视角

服务器接收到客户端发送的请求,并给出响应,这个过程所消耗的时间为响应时间,即服务器仅关注 T2

从不同的视角下,衡量响应时间的指标也各不相同。在实际测试过程中,要明确以什么视角验证被测对象的性能。

2、并发

(1)并发用户数

简称 VU ,指的是系统中操作业务的用户。一般称为虚拟用户数。并发用户数跟注册用户数,在线用户数有很大差别。并发用户数一定会对服务器产生压力,而在线用户数只是挂在系统上,对服务器不产生压力

(2)在线用户数

在已有系统中选取高峰时刻,在一定时间内使用系统的人数,这些人数可认为是在线用户数

3注册用户数

数据库中存在的用户数。并发用户数可以取系统用户数的 10%,例如在半个小时内,使用系统的用户数为 10 万,那么取 10%(即 1 万) 作为并发用户数

4系统并发数

一般指测试工具为了模拟出用户并发压力而启动的线程,比如 jmeter 里面的 Thread。由于 jmeter 中的线程有迭代的概念,所以通过线程迭代数就可以模拟出用户单位时间最大的并发数。

注意不要把系统并发数和并发用户数* 的概念混在一起

3、吞吐量

单位时间内系统处理请求的数量。吞吐量直接体现了软件系统的业务处理能力

1衡量方式

Rps 请求数/单位时间

Hps 点击数/单位时间

Tps 通过事物数/单位时间

Qps 查询数/单位时间

2TPS 模型

随着压力不断增长,实测系统的资源会不断被消耗,TPS 值会因为这些因素而发生变化,并且符合一定的规律

4、基准测试

原点到 a 之间的系统性能,指以系统预期性能指标为前提,对系统不断增加压力,以验证系统能否达到预期性能

5、负载测试

a 到 b 的系统性能,是指对系统不断地增加压力或一定压力下的持续运行,直到系统的某项或多项性能指标达到极限,例如某种资源已经达到饱和状态等

6、压力测试

b 到 d 之间的系统性能,是指超过安全负载的情况下,对系统不断施加压力,直到系统崩溃,找出系统的瓶颈点和崩溃点。

Tps(每秒处理事务数)

一个事务是指客户端向服务器发送请求然后服务器做出反应的过程

单请求事物事物由单个接口请求构成。如一次登录,一次查询

多请求事物事物由多个接口请求构成。如登录 - 查询 - 新增 - 退出。这四步操作构成一个完整的事物

TPS 的决定性因素事务是要靠虚拟用户完成

1 个用户在 1 秒内完成 1 笔事务,那么 TPS 就是 1

1 个事物响应时间是 1ms,那么 1 个用户在 1 秒内能完成 1000 笔事务。TPS 就是 1000

1 笔业务响应时间是 1s,那么 1 个用户在 1 秒内只能完成 1 笔事务。想达到 1000TPS 就至少需要 1000 个用户

因此可以说 1 个用户能产生 1000TPS, 1000 个用户也可以产生 1000TPS,由响应时间决定

5、Rps 每秒发起的请求数

并发数=rps* 平均响应时间

RPS 用来描述施压引擎实际发出的压力大小

RPS 模式主要是为了站在服务端视角去直接衡量系统的吞吐能力-TPS 而设计的

并发过低时可能达不到预期的 RPS,并发过高时可能压力过大直接压垮服务器

按照被压测端需要达到的 TPS 去设置相应的 RPS,应用场景主要是一些动态的接口 API,比如登陆、提交订单

7、吞吐量行业标准

金融行业:1000TPS~50000TPS,不包括互联网化的活动

保险行业:100TPS~100000TPS,不包括互联网化的活动

制造行业:10TPS~5000TPS

互联网电子商务:10000TPS~1000000TPS

互联网中型网站:1000TPS~50000TPS

互联网小型网站: 500TPS~10000TPS

提问:我有一个功能,需要测试一下最大支持多少用户并发?

此时要计算的是最大用户并发数,强调的是同时操作,也可以理解为同时发起请求我们可以通过 RPS 定时器或者阶梯加压线程组测试每秒最大的请求数

三、吞吐量模式下的阶梯负载

RPS模式负载:RPS是request persecond,也就是每秒的请求数。我们通过持续不断地增加请求来对服务端施压,测试服务端的处理能力,找到瓶颈。

策略

第一次:并发 200,不限迭代次数,同时在请求下面加 RPS 定时器。目的是在 200 线程下,将 RPS 逐步增加到 1000/S,并持续运行一段时间

start=1 end=200,持续时间是 10。表示我们需要在 10s 内将 RPS(每秒请求数)均匀的从 1 提升到 200。


拐点判断方式

  1. 通过 Tps走势图观察拐点。吞吐量会随压力的增大呈抛物线状,抛物线的最高点处,即为当前测试环境下该请求的最大处理能力。吞吐量的拐点往往也就是响应时间的拐点。
  2. 通过资源消耗判断拐点。比如测试中 Tps 仍呈上升趋势,但 CPU 资源使用率已高达 90%,就以此时 Tps 值为当前测试环境下该请求的最大处理能力。

注意:rps 是客户端每秒发起的请求,tps 是服务端每秒完成的请求。实际情况中,tps 往往和 rps 不等,因为要考虑到中间的网络和服务处理时间

启动 jmeter,运行一段时间之后我们观察一下监听器的数据图表Tps监听

RPS 在 836/s 的时候开始出现拐点,请求曲线的角度开始收窄

TPS 在 730/s 左右开始出现剧波动,可以认为这是吞吐量的一个拐点

在 1:00 秒的时候,也就是 TPS 达到 730/S 的时候,事物开始出现错误

1:此处可能就是一个性能瓶颈
2:有可能是百度对 ip 的访问量做了限流,防止爬虫
3:有可能是我当前环境的问题,包括带宽,内存,cpu 等等资源的限制,后期都需要考虑进去

 在性能稳定的情况下,可以套用公式去计算出最大并发数:并发数 = RPS * 响应时间
1:稳定状态下,最大 RPS= 836/S。这个值可以理解为最大支持 1 秒内 836个用户同时去访问。
2:稳定情况下,响应时间大约长期保持在 160 ms
3:稳定情况下,峰值系统并发数大约是 836*0.16=134。这个值可以理解为只要启动 134个线程就可以在一秒内满足 836/s 的压力值。或者换个角度,也可以表示最大支持 134个用户在 1s 内不停的访问,一直达到瓶颈点

第二次:100 并发
这一次我们把线程数收紧,只给 100 线程。以此观察线程数降低的情况下,压力会不会变小观察到,请求数依然在 820-830 这个区间变缓

结论

此当前环境下,不论是本机资源,还是百度设置了限流等原因,我们的最大请求数只能维持在 820-830,最大 TPS 维持在 700-750 之间,平均响应时间在160-170ms之间,最大系统并发数在 130 左右。超出这个范围就开始出现波动

四、并发用户模式下的阶梯负载

并发用户负载:

我们在讨论负载测试的时候,会说持续稳定地增加系统的负载。那么什么是持续稳定的增加负载呢?jmeter中,线程数可以看做是虚拟并发用户。那么我们想要稳定的增加负载,就需要持续不断地增加并发数。通过并发数的不断增加来考量各种性能指标的变化,找到拐点。

策略:

配置参数的完整描述为:给定负载并发用户数为500,从0秒开始,每3秒内增加50个并发用户数,3秒时刻完成50个并发用户数的启动后开始平稳运行10秒钟,依次下去,直到500个并发用户数全部都启动完成后,平稳运行100秒,然后每隔5秒减少100个并发用户数直到并发用户数减少为0时,负载测试结束。

结合响应时间,tps,活动线程监听器一起分析,可以看到在1分30秒左右的时候,响应时间突然飙升,用户数达到350个并发,这里可以认为是一个瓶颈点

五、如何快速的确定拐点

1、创建多个线程,每个线程数不同,逐渐递增

2、测试计划中,需要勾选独立运行每个线程组,勾选该选项的意义就是依次并发执行10、50、100、200线程,直到压测结束。

3、执行命令 jmeter -n -t E:\jmeter脚本\压测.jmx -l E:\jmeter脚本\聚合报告.jtl -e -o E:\jmeter脚本\webreport

4、分析测试报告

聚合报告如下,随着并发用户增加,平均响应时间在递增,报错率也在递增,TPS也随着用户数的增加和增加,到了500用户为最高点,1000并发用户反而降低

查看Response Times Over Time图表可以看到响应时间随着并发用户数递增,平均响应时间一直增加,当1000并发时,响应时间增加幅度最大

查看Transactions Per Second,从图表可以看出当并发用户从10递增到500,一直是递增趋势,然后500-1000,开始慢慢降低

查看 Hits Per Second,从图表可以看出当并发用户从10递增到500的时间段,每秒请求数一直是递增趋势,然后500-1000并发,请求数开始不增反降

得出结论,暂时不考虑其他因素,确定拐点就是500并发。

施压策略建议:

在实际的工作中,可能习惯性的高并发的去压,单台机器压测2000并发的也有见到过,这是不可取的。我们是为了找到系统最大处理瓶颈,这个需要一点点的并发往上加的,防止服务器太脆弱直接导致压跪掉是很有必要的。

通过很多性能测试案例,发现不需要用上万的用户并发去进行测试,只要系统处理业务时间足够快,几百个用户甚至几十个用户就可以达到目的。对于大型系统、业务量非常高、硬件配置足够多的情况下,5000用户并发就足够了;对于中小型系统,1000用户并发就足够了。

在做负载测试的时候,一般都是按照梯度施压的方式去增加虚拟用户数,而不是在没有预估的情况下,一次加几万个用户,交易失败率非常高,响应时间非常长,已经超过了使用者忍受范围内,这样做没有多大的意义。


http://chatgpt.dhexx.cn/article/yDWMp6lF.shtml

相关文章

JMETER性能测试

jmeter 为性能测试提供了一下特色: jmeter 可以对测试静态资源(例如 js、html 等)以及动态资源(例如 php、jsp、ajax 等等)进行性能测试 jmeter 可以挖掘出系统最大能处理的并发用户数 jmeter 提供了一系列各种形式的…

超详细!Jmeter性能测试

前言 性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。 测试流程: 需求分析→环境搭建→测试计划→脚…

(一)JMeter性能测试,完整入门篇:性能测试操作步骤

原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具&#xff0…

jmeter性能测试步骤实战教程

1. Jmeter是什么? 2. Jmeter安装 2.1 JDK安装 由于Jmeter是基于java开发,首先需要下载安装JDK (目前JMeter只支持到Java 8,尚不支持 Java 9) 1. 官网下载地址: http://www.oracle.com/technetwork/java/…

如何用jmeter工具进行性能测试

前言 今天我们来说说jmeter如何进行性能测试,我们都知道jmeter工具除了可以进行接口功能测试外,还可以进行性能测试。当项目趋于稳定,根据性能需求就可以着手准备性能测试了,今天就说一说jmeter如何进行性能测试,jmet…

【软件测试】Jmeter性能测试(性能测试,Jmeter使用与结果分析)

文章目录 前言一、性能测试1. 什么是性能测试?2. 性能测试的重要性3. 性能指标——QPS和TPS①QPS②TPS 二、压测工具Jmeter1. 什么是Jmeter?2. Jmeter主要元件3. 下载安装 三、一个简单的测试案例①新建一个线程组②新建一个HTTP请求③添加HTTP信息头&am…

全网最牛,JMeter性能测试步骤与结果分析(压力 / 负载测试)详全,精品太干了

目录:导读 一、前言二、负载、压力、可靠性(非常重要)三、压力测试实战四、负载测试实战五、资源监控1、Windows自带的资源监工具2、Jmeter里面的第三方监理插件3、Linux资源监控 一、前言 1、负载:模拟业务操作对服务器造成压力…

【Java】比较器 Comparator Comparable

一、背景 我们在使用 Collections.sort() 对链表进行排序(或者使用 Arrays.sort() 对数组进行排序)时,常常需要根据不同情况自定义排序规则。比如:当我们存储学生对象时,我们需要按照学生年龄进行排序,这时…

Java 解惑:Comparable 和 Comparator 的区别

读完本文你将了解到: Comparable 自然排序Comparator 定制排序总结 Java 中为我们提供了两种比较机制:Comparable 和 Comparator,他们之间有什么区别呢?今天来了解一下。 Comparable 自然排序 Comparable 在 java.lang 包下&am…

【Java】Comparable和Comparator接口

活动地址:CSDN21天学习挑战赛 ✨博客主页: XIN-XIANG荣 ✨系列专栏:【Java SE】 ✨一句短话: 难在坚持,贵在坚持,成在坚持! 文章目录 一. Comparable接口1. Comparable简介2. 为什么要实现Comparable接口3. Comparable的实际应用 Comparator接口1. Comparator简介2.…

一篇告诉你Comparator.comparing的使用

Comparator.comparing用处 很多情况下sql不好解决的多表查询,临时表分组,排序,尽量用java8新特性stream进行处理,使用java8新特性 //返回 对象集合以类属性一升序排序 list.stream().sorted(Comparator.comparing(类::属性一));//返回 对象集合以类属性一降序排序 注意两种写法…

详解Comparable和Comparator

目录 Comparable接口 Comparator接口 Comparable接口 Comparable接口在源码中的声明&#xff1a; public interface Comparable<T> {public int compareTo(T o); } 可以看到&#xff0c;只要一个compareTo方法&#xff0c;也就是说&#xff0c;实现Comparable接口的类…

Java Comparator的使用

这是啥&#xff1f; Comparator是个接口&#xff0c;是一个比较器&#xff0c;常用内部类的方式实现&#xff0c;常用于实现某个类的比较规则 怎么用&#xff1f; 场景&#xff1a;假如有一个字符串集合list&#xff0c;一共有10个元素&#xff0c;乱序的。现有排序规则orde…

Comparable与Comparator浅析

欢迎支持笔者新作&#xff1a;《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》&#xff0c;同时欢迎关注笔者的微信公众号&#xff1a;朱小厮的博客。 欢迎跳转到本文的原文链接&#xff1a;https://honeypps.com/java/comparable-and-comparator-analysis/ 今天…

Comparator和Comparable的区别

一、概述 Comparable和Comparator都是两个接口&#xff0c;接口都可以用来实现集合中元素的比较、排序&#xff0c;Comparator位于包java.util下&#xff0c;而Comparable位于包java.lang下&#xff0c;Comparable接口将比较代码嵌入自身类中&#xff0c;而Comparator既可以嵌入…

Comparator使用简介

1、Lambda表达式 2、Comparator使用简介 文章目录 一、使用方式1、Stream中sorted()方法2、Stream中max()方法3、Stream中排序JSONObject方法 二、具体方法1、 compare2、 equals3、 naturalOrder4、 comparing5、 comparingInt6、 comparingLong7、 comparingDouble8、 nullsF…

Comparator详解

前面我们讲过Java提供了一个用于比较的接口Comparable,提供了一个比较的方法,所有实现该接口的类,都动态的实现了该比较方法。实际上Java中除了比较一个接口外&#xff0c;还提供了一个接口&#xff0c;该接口也是具有比较的功能&#xff0c;但该接口注重的却是比较容器&#x…

Hough变换的理解

Hough变换&#xff1a; 原理&#xff1a;将一个空间映射到另一个空间。这里是将X&#xff0c;Y空间映射到R,Φ空间。看下图&#xff1a;左图是X,Y空间的直线&#xff0c;该直线方程&#xff1a;ykx b&#xff0c;确定方程的参数k,b也可以组成一个空间&#xff0c;这个空间中的…

matlab hough变换检测平行直线,浅谈Hough变换的平行直线检测改进方案

在遥感图像中,对江河上桥梁目标的识别具有重要意义。由于桥梁的最突出特征在于桥体的平行直线,所以对平行直线的实时检测十分重要。经典的Hough变换是一种常用的检测直线的方法,Hough变换的研究及应用动态:Hough变换于1962年由Paul Hough提出,并在美国作为专利被发表。它所…

Hough变换检测直线与圆的原理

霍夫变换的基本原理 霍夫变换(Hough Transform)可以理解为图像处理中的一种特征提取技术&#xff0c;通过投票算法检测具有特定形状的物体。霍夫变换运用两个坐标空间之间的变换将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间中的一个点形成峰值&#xff0c;从而…