jmeter聚合报告如何添加单位_性能测试连载(8)jmeter压力测试中的难点解析

news/2025/2/27 9:53:21

概述
新人在用jmeter做压力测试的时候,会被一些性能术语搞懵,直接导致的后果就是对测试出来的结果数据根本不能理解,更谈不上分析。这篇文章着重给大家实例解释一下jmeter压力测试的一些专有名词

问题1:什么是压力测试
问到如何做压力测试,很多人可能只会回答:"加线程组,加并发,看结果"。那么什么是压力,压力从哪里体现?这些恐怕就不得而知了。。。

到底什么是压力呢?实际上我们在压力测试中用RPS来表示

RPS
RPS 就是每秒请求数(Request Per Second),它描述了施压引擎向服务器实际发出的压力大小。从用户角度来说,rps是每秒钟点击的次数从客户端角度来说,rps是每秒向服务端发出的请求数使用工具的最终目的就是为了利用线程数和迭代次数模拟出和用户每秒点击相匹配的压力值,施压服务端,得到性能数据

Rps 由并发数,和服务器响应时间决定。并发数过低时可能达不到预期的 RPS,并发数过高时可能压力过大直接就压垮了服务器。

问题2:jmeter怎么调节压力
从前面的描述中我们知道压力就是每秒发出的请求数。现在再来理解一个jmeter的名词Ramp-up-period(in seconds)

Ramp-up-period
jmeter在线程组中有一个可调节的数值:Ramp-up-period,它表示启动所有线程需要的时间,单位是秒

图1-1设置了100个线程,迭代次数=1,Ramp-up-period=25,那么它表示我将在25秒内启动100个线程,也就是每秒钟启动4个线程。

每个线程启动之间的间隔时间是25/100=0.25s,也就是250ms。

换个理解方式,它表示了我们预期给服务器的压力就是每秒钟发送4个请求。也就是说,设置的RPS=4/s

1-1

图1-2设置了100个线程,迭代次数=10,Ramp-up-period=25,那么它表示我将在25秒内启动100个线程,每个线程迭代10次。也就是25秒内启动100个线程并迭代10次。
此时RPS=40/s。观察聚合报告1-3,jmeter在25秒内用100个线程发起了1000次请求。

1-2

1-3

jmeter中的RPS是无法通过监听器来直观的监测到,但是在单请求下,RPS和HPS理论上是相等的。可以通过HPS监听器去验证一下。

HPS监听

TPS监听

问题3:jmeter中的throughput到底是什么?
各位小伙伴们在使用jmeter时,是不是常常被 throughput 搞晕?到处都是throughput ,到底是做什么用的呢?

我们先看看有哪些throughput 元件

定时器中有目标Constant Throughput 和 Throughput Shaping Timer

逻辑控制器中有吞吐量控制器

聚合报告中也有一个Throughput

撑不住了,好晕啊。。。啊。。。啊。。。。

稳住不要晕倒,下面带大家一个个的来梳理,重建jmeter世界观

先理解一下什么是Throughput

Throughput是用来衡量吞吐量的指标,通常由TPS和QPS来表示。

TPS表示每秒通过的事物数,QPS表示每秒查询接口数。

jmeter中如果只有单接口,那么TPS=QPS。

如果是多接口的混合场景,只有在事物控制器下执行,才能将其理解为TPS。

聚合报告中的 Throughput
下图Throughput表示无限迭代下的业务吞吐量TPS,大约是40/s。意思就是每秒响应完成的请求是40。

Constant Throughput Timer
现在我们在接口下添加一个 Constant Throughput Timer

这是一个吞吐量定时器,它可以控制我们的TPS。

如图,我设定了目标吞吐量是240/min,也就是4/s。

接下来运行的结果可以看到,无论我们预期的吞吐量有多大,实际的TPS都被强力压缩在4/s,同时我们的平均响应时间也变的很短

Throughput Shaping Timer
再来看一下 Throughput Shaping Timer

下图可以很明显看到它是用来控制RPS的,也就是每秒请求数。

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

下面可以看出来我们的每秒请求数均匀的在提升

逻辑控制器-吞吐量控制器
这个控制器里的吞吐量,指的是请求比例。

比如我们总共发出1000个请求,这个控制器下的接口只会发送300个,比例控制在30%

下面这张图更直观的说明了请求的比例分配

请求1的控制器分配的比例是30%,剩余的70%都分给了请求2的控制器


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/weixin_42356340/article/details/112413546


http://www.niftyadmin.cn/n/5869911.html

相关文章

.net websocket 使用

系列文章目录 目录 文章目录 前言 一、websocket是什么? 一、工作原理 二、特点与优势 三、应用场景 四、缺点与挑战 二、使用步骤 1.引入库 2.如何使用 总结 文章目录 websocket 在.net中使用前言一、websocket 是什么?二、使用步骤 1.引入…

Java Junit框架

JUnit 是一个广泛使用的 Java 单元测试框架,用于编写和运行可重复的测试。它是 xUnit 家族的一部分,专门为 Java 语言设计。JUnit 的主要目标是帮助开发者编写可维护的测试代码,确保代码的正确性和稳定性。 JUnit 的主要特点 注解驱动&…

如何做微课视频教程,小白零基础起步方法

想做微课视频教程,却不知从何下手?别慌,作为曾经的小白,我摸索出了一套超实用的方法,现在就分享给同样想入门的你,让你轻松掌握如何做微课视频教程。 制作微课视频,得先确定主题。这个主题要足…

python-leetcode-完全平方数

279. 完全平方数 - 力扣(LeetCode) class Solution:def numSquares(self, n: int) -> int:# 初始化 dp 数组,dp[i] 存储和为 i 的最少完全平方数数量dp [float(inf)] * (n 1)dp[0] 0 # 和为 0 的最少完全平方数数量是 0for i in range…

【构建工具】Gradle 8中Android BuildConfig的变化与开启方法

随着Gradle 8的发布,Android开发者需要注意一个重要变化:BuildConfig类的生成现在默认被关闭了!!!。这个变化可能会影响许多依赖于BuildConfig的项目(别问,问就是我也被影响了,多好用…

登录逻辑结合redis

1. 用户登录 用户访问登录页面,输入用户名和密码,提交表单。 服务端验证用户名和密码: 如果验证成功,生成 ticket,并将 ticket 和用户 ID 存储在缓存中(如 Redis)。 将 ticket 放入 Cookie 中…

org.springframework.boot不存在的其中一个解决办法

最近做项目的时候发现问题,改了几次pom.xml文件之后突然发现项目中的注解全部爆红。 可以尝试点击左上角的循环小图标,同步所有maven项目。 建议顺便检查一下Project Structure中的SDK和Language Level是否对应,否则可能报类似:“…

Jenkinsfile流水线构建教程

前言 Jenkins 是目前使用非常广泛的自动化流程的执行工具, 我们目前的一些自动化编译, 自动化测试都允许在 Jenkins 上面. 在 Jenkins 的术语里面, 一些自动化工作联合起来称之为流水线, 比如拉取代码, 编译, 运行自动化测试等. 本文的主要目的是引导你快速熟悉 Jenkinsfile …