性能测试连载 (7)-jmeter 压力测试中的难点解析

2023-11-01

概述

新人在用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-2设置了100个线程,迭代次数=10,Ramp-up-period=25,那么它表示我将在25秒内启动100个线程,每个线程迭代10次。也就是25秒内启动100个线程并迭代10次。
此时RPS=40/s。观察聚合报告1-3,jmeter在25秒内用100个线程发起了1000次请求。
在这里插入图片描述在这里插入图片描述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的控制器在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

性能测试连载 (7)-jmeter 压力测试中的难点解析 的相关文章

  • JMeter在HTTP请求中使用beanshell变量

    我是这里的绝对菜鸟 我的意思是JAVA 花了几个小时寻找解决方案 现在我只想开枪自己 我想在 beanshell 断言中创建一个字符串 该字符串位于 HTTP 请求的正上方 在 beanshell 中我写道 String docid abc
  • 在 JMeter 的 BeanShell Sampler 中将字符串解析为整数

    我试图在 JMeter 中将字符串解析为整数 但由于以下错误而失败 如果我尝试打印 vars get 返回的字符串 它们看起来不错 2014 06 28 00 08 52 WARN jmeter assertions BeanShellAs
  • 负载测试时如何测量CPU和内存

    我们在异构环境中使用 JMeter 并且希望在运行服务或 Web 应用程序的服务器上产生重负载时测量 CPU 和内存 您建议使用什么 是否有任何软件解决方案 开源或商业 可以将 CPU 和内存使用情况记录在文件或数据库中 谢谢你 您可以使用
  • 在 Jmeter 中使用 JsonPath 和 != 条件从 JSON 中提取一些值

    我有以下 JSON 我需要获取没有 type Jenkins 的实例的 id 值 data id 35002399 6fd7 40b7 b0d0 8be64e4ec09c name 94Jenkins url http 127 0 0 1
  • Jmeter - 如何向计数器添加前缀。类似于随机变量

    目前 在随机变量中 我可以在变量的输出格式中添加前缀或后缀 然而 这个很好的功能不适用于简单的计数器控制器 每次使用变量时连接 string counter 对我来说并不是一个好的选择 因为我经常这样做 有没有办法以随机变量的方式实现前缀
  • JMeter 在性能测试期间挂起

    我试图模拟 4 个不同用户的 100 个线程请求 所有 97 个请求均已发送和接收 但其余 3 个请求仍显示为正在执行 我必须手动停止 Jmeter 然后只传递剩余的请求 为什么会发生这种情况 您的计算机可能没有资源来执行请求 或者 Jav
  • JMeter 记录使用 HTTPS 的 iOS 本机应用程序会导致 SSL 握手问题

    我有一个用于我们的应用程序的 IPAD 混合应用程序 它会在登录过程中尝试访问我们的 https 服务器 我想使用 JMeter 来记录这个简单的流程 我正在本地计算机上运行 JMeter 代理服务器 我更新了 IPAD 代理详细信息 以便
  • Azure 应用程序网关在进行 JMeter 负载测试时随机遇到 504 网关超时

    我有 1 个应用程序网关 它有 2 个后端 Azure VM 它通过 IIS 托管 ASP CORE REST API 两者都使用端口 80 进行通信 手动测试一切正常 直到我们使用 jmeter 进行 2500 线程 POST 请求负载测
  • Jmeter中的“延迟时间”与“连接时间”有什么区别?

    我是jmeter 3 1用户 我不清楚 延迟时间 与 连接时间 的区别 事实上 在jmeter官方文档中 是这样说的 新的连接时间指标 connectTime 表示建立连接的时间 默认情况下 它不会保存到 CSV 或 XML 要保存它 请添
  • 使用 JMeter 将文件上传到 Rest API

    注意 我已经检查过BlazeMeter 教程 https www blazemeter com blog testing advanced rest api file uploads jmeter当我使用 文件上传 选项卡时 它将文档作为正
  • HTTP2 请求示例因 Jmeter4、Java 10 无客户端 ALPNProcessors 崩溃

    我无法使用 Jmeter 4 0 创建 HTTP2 请求 我已经安装了最新的 JDK 和 HTTP 2 协议采样器插件 我还观察到 penJDK8ClientALPNProcessor e23ec5a 不适用于 java 10 0 2 尝试
  • PhantomJS CPU(核心)受限吗?

    我开始做一些基于并行浏览器的测试 并想看看在达到 100 CPU 之前我可以在 EC2 大型机器上并行运行多少个浏览器 我正在使用 JMeter webdriver 插件来实际运行浏览器 对于 FireFox 实际上每个 CPU 核心有 1
  • 在 JMETER 中循环遍历 JSON 响应 +

    我正在使用 Jmeter 进行性能测试并卡在以下点 我从 Webapi 收到 JSON 响应 如下所示 PersonInfoList Person 0 id 1 name Steve 1 Person id 2 name Mark 我需要根
  • 分布式模式下的 JMeter 摘要报告

    我正在分布式模式 2个从站 主站 下运行Jmeter性能测试 在我的测试脚本中我配置了摘要 报告应将一些数据保存到 csv 文件 此文件位置配置有固定名称 reports summary csv 值 当我从主站成功连接到两个从站时 测试在从
  • foreach 控制器无法正确处理变量

    我试图循环我的用户定义的变量并将它们添加到 cookie 管理器 我的设置方法如下 但是当我查看结果时 它只需要第一个变量并将其用于所有循环 因此 HTTP Cookie 管理器仅替换第一个 var 这种行为是意外的 我是否设置错误 我添加
  • 如何使用JMeter对网站进行负载测试

    我想在 JMeter 中创建一个脚本来模拟100 位用户在 3 4 分钟内访问我们的网站 我们需要测试我们的应用程序是否可以允许 25 000 个用户 天 即每小时 1 100 个用户 为此我做了这个 Jmeter 测试 这是结果 这是图表
  • 通过 Java 独立应用程序运行 JMeter 测试用例,无需在本地安装 JMeter。

    我正在尝试使用以下命令执行 JMeter 测试用例 我是否有另一种方法可以在不本地安装 JMeter 的情况下执行测试用例 这里我必须提供 JMeterUtils 的 JMeter HOME 路径 JMeter Engine Standar
  • Apache JMeter:在请求正文中添加随机数据

    我正在 Apache JMeter 中对我们的应用程序进行压力测试 我想到调用注册用户方法 该方法将在数据库中添加用户 但如果电子邮件已存在 则不会发生数据库操作 如何在身体数据中添加随机数 或者有其他方法可以对与数据库连接的应用程序进行压
  • Cloud SQL 间歇性通信链路失败

    我在用着jmeter对使用 Cloud SQL 的 GAME Web 服务进行压力测试 我收到间歇性通信链接失败异常 我尝试过使用直接连接和连接池 并且在这两种情况下都看到了异常 随着每秒请求数的增加 异常也会增加 请注意 我们使用的是最高
  • 错误 - jmeter.util.BeanShellInterpreter:调用 bsh 方法时出错:eval 源文件:内联评估:

    当我运行将 Beanshell 后处理器作为采样器子级的 jmeter 脚本时 出现以下错误 错误 jmeter util BeanShellInterpreter 调用 bsh 方法时出错 eval 源文件 内联评估 https i st

随机推荐

  • MAYA基础知识和技巧总结

    目录 自定义工具架 自定义热盒 打开Maya时隐藏Output Window 快捷键 小技巧 元素选择技巧 隐藏和显示元素的几种方法 多切割工具 加线 切割 补面的几种方法 复制的几种方法 加入参考图并锁定不动 曲线建模技巧 双轨成型工具
  • CUDA 编程入门

    CUDA 编程入门 更好的阅读体验 CUDA 概述 CUDA 是 NVIDIA 推出的用于其发布的 GPU 的并行计算架构 使用 CUDA 可以利用 GPU 的并行计算引擎更加高效的完成复杂的计算难题 在目前主流使用的冯 诺依曼体系结构的计
  • mongoDB使用总结

    windows安装 zip压缩包方式安装 下载 注意 因为现在最新版的mongodb不兼容win7 对windows系统的最低要求是win10 所以win7系统要安装mongodb数据库必须考虑使用旧版安装 Download MongoDB
  • 一个强大的漏洞公告网站

    http seclists org 通过一篇文章 MySQL 严重 Bug 用户登陆漏洞 得知的这个网站 强大
  • Python不是一门伟大的语言

    作为一门简洁易用 生态蓬勃且具有高泛用性的编程语言 Python一直以来都被不少人称作 编程语言中的瑞士军刀 尤其随着近来AI热潮席卷全球 Python在编程语言圈中的地位也随之水涨船高 甚至一度被视作AI专用语言或大数据专用语言 然而从语
  • 数据结构---归并排序

    归并排序 第一步 分组 第二步 归并 归并操作 第一步 第二步 第三步 JAVA实现 总结 第一步 分组 第1层分成2个大组 每组n 2个元素 第2层分成4个小组 每组n 4个元素 第3层分成8个更小的组 每组n 8个元素 一直到每组只有一
  • 各种经纬度坐标系转换-百度坐标系、火星坐标系、国际坐标系

    各种经纬度坐标系转换 百度坐标系 火星坐标系 国际坐标系 文章代码参考网上 测试没什么问题 汇总整理希望对大家有帮助 dou WGS84 国际坐标系 为一种大地坐标系 也是目前广泛使用的GPS全球卫星定位系统使用的坐标系 GCJ02 火星坐
  • UE4中使用数据表(Data Table)

    本文依据官方文档数据驱动游戏性元素整理而来 做过游戏的应该都清楚 如果游戏稍微有点规模 那么使用数据驱动来做游戏一般是必不可少的一步 一般也就是策划通过本表的方式来解决 下面我们来简单说一下UE4中如何使用DataTable来实现数据驱动开
  • MobileViG实战:使用MobileViG实现图像分类任务(一)

    文章目录 摘要 安装包 安装timm 安装 grad cam 数据增强Cutout和Mixup EMA 项目结构 计算mean和std 生成数据集 摘要 论文翻译 https blog csdn net m0 47867638 articl
  • 获取cookie的两种方式EL表达式中判断数据是否为空

    1 使用java代码获取cookie Cookie cs request getCookies 通过请求获取 for Cookie c cs if c getName equals loginAct String loginAct c ge
  • js总结(二)--彻底理解js中this的指向,不必硬背。

    首先必须要说的是 this的指向在函数定义的时候是确定不了的 只有函数执行的时候才能确定this到底指向谁 实际上this的最终指向的是那个调用它的对象 这句话有些问题 后面会解释为什么会有问题 虽然网上大部分的文章都是这样说的 虽然在很多
  • 解决 vscode 登录微软账户同步设置 出现“vscode.dev 关闭了连接“ 问题

    我的电脑最近重装了系统 之前的软件都删除了 在重新安装vscode之后想同步之前的设置 主题时出现了问题 我的解决方法是 在当前页面 输入 https vscode dev 看能不能打开 如果能打开 再次点击vscode登录账号同步设置 我
  • Pytorch与Onnx模型的保存、转换与操作

    Open Neural Network Exchange ONNX 开放神经网络交换 格式 是一个用于表示深度学习模型的标准 可使模型在不同框架之间进行转移 一 pytorch模型保存 加载 有两种方式可用于保存 加载pytorch模型 1
  • mysql查询表的所有内容

    show create table 表名
  • echarts设置x轴字体不同颜色

    业务需求 根据x轴是用户和有用户的文件夹来展示两种颜色 在获取数据的方法中 initData totalAnaysis then res gt let xData yData xFontcolor res data user forEach
  • 男人彻底懂得一个女人之后就不会爱她了吗?

    爱情教母张爱玲说过 男人彻底懂得一个女人之后 是不会爱她的 其实张爱玲的表达不确切 谁都不可能彻底懂得谁 自己都不可能彻底懂得自己 否则 张爱玲不会一遍一遍地写自己的童年 对其进行剖析 早年的有散文 私语 后来有英文的 雷峰塔 和中文的 小
  • java 提取文档注释 命令,java文档注释及javadoc命令

    注释的三种类型 1 单行注释 双斜线 2 多行注释 一次性将程序的多行注释掉 3 文档注释 如果编写Java源代码是添加了合适的文档注释 然年后通过JDK提供的Javadoc工具可以直接将源代码里面的文档注释提取成一份系统的API文档 文档
  • 破解AES秘钥长度限制

    破解AES秘钥长度限制 高级加密标准 AES 在密码学中又称Rijndael加密法 是美国联邦政府采用的一种区块加密标准 这个标准用来替代原先的DES 密码说明 因为Rijndael加密法可以支持更大范围的区块和密钥长度 AES的区块长度固
  • 在liunx双机下自己动手实现浮动IP技术

    http www 360doc com content 11 0823 18 5907545 142730623 shtml 有两台Linux服务器 其中一台主机 IP 139 24 214 22 对外提供了一定的网络服务 另一台从机 IP
  • 性能测试连载 (7)-jmeter 压力测试中的难点解析

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