jmeter压力测试中的疑难杂症
概述
大部分新手在用jmeter做压力测试的时候,对一些性能术语十分模糊,直接导致的后果就是对测试出来的结果数据根本不能理解,更谈不上分析了。今天的文章就着重给大家解释一下压力测试中的一些专有名词
问题1:什么是压力测试
问到如何做压力测试,很多人可能只会回答:"加线程组,加并发,看结果"。那么什么是压力,压力从哪里体现?这些恐怕就不得而知了。。。
到底什么是压力呢?实际上我们在压力测试中用RPS来表示
是不是有点懵了?什么是RPS呢?
RPS 就是每秒请求数(Request Per Second),它描述了施压引擎向服务器实际发出的压力大小。
Rps 由并发数和服务器响应时间决定。并发数过低时可能达不到预期的 RPS,并发数过高时可能压力过大直接就压垮了服务器。
问题2:jmeter怎么调节压力
从前面的描述中我们已经知道压力就是每秒发出的请求数。现在再来理解一个名词Ramp-up-period(in seconds)
jmeter在线程组中有一个可调节的数值:Ramp-up-period,它表示启动所有线程需要的时间,单位是秒
如下图,我设置了100个线程,迭代次数=1,Ramp-up-period=25,那么它表示我将在25秒内启动100个线程,也就是每秒钟启动4个线程。
每个线程启动之间的间隔时间是25/100=0.25s,也就是250ms。
换个理解方式,它表示了我们预期给服务器的压力就是每秒钟发送4个请求。也就是说,设置的RPS=4/s
如下图,现在是不是能理解一些了?

jmeter中的RPS是无法通过监听器来直观的监测到,但是可以通过侧面方式去验证一下。
下图右上角能清晰的看出,我们100个线程用了25s才完全加载,或者说我们用了25s才成功的把100个请求发出去。那么每秒的请求就是4

因为我们的脚本是单接口,所以理论上来说,此时的TPS=HPS=RPS.下图可以看出我们的几个指标都是4/s。
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,大约是99/s。意思就是每秒能处理99笔事物。
或者可以理解为:每秒能处理完成的请求数是99


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。

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

逻辑控制器-吞吐量控制器
这个控制器里的吞吐量,指的是请求比例。
比如我们总共发出9000个请求,这个控制器下的接口只会发送3000个,比例控制在30%

下面这张图更直观的说明了请求的比例分配
login1的控制器分配的比例是30%,剩余的70%都分给了login2的控制器


jmeter压力测试中的疑难杂症的更多相关文章
- jmeter压力测试中遇到的问题汇总
1.线程数大于1的时候,计数器配置没有勾选reset counter选项,导致测试结果出错 正常结果: 实际结果:index大于count数量时出错,病区及床号直接显示在count的基础上开始加1了 ...
- JMeter压力测试以文件的形式
JMeter压力测试入门教程[图文] 1. 下载JMeter 2. 启动JMeter 3. 运行预准备 4. 运行 文章目录 Apache JMeter是Apache组织开发的基于Java的压力测试工 ...
- jmeter 压力测试
转自: https://blog.csdn.net/cbzcbzcbzcbz/article/details/78023327 Jmeter压力测试简单教程(包括服务器状态监控) 2017年09月18 ...
- 转载:JMeter压力测试入门教程[图文]
JMeter压力测试入门教程[图文] Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可 ...
- 【转】jmeter压力测试
jmeter压力测试 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域, 是压力测试的首选软件 ...
- Jmeter压力测试入门操作
Jmeter压力测试入门 1. 前言 Jmeter 是Apache组织开发的基于Java的压力测试工具,开源并且支持多个操作系统,是一款很好的HTTP测试工具.本篇文章主要的目的是帮助没有接触过J ...
- 基准测试-jmeter压力测试activeMQ之一环境安装配置
jmeter压力测试activeMQ 摘要:linux(CentOS)单机activeMQ安装.window(2008Server)Jmeter配置activeMQ包.Jmeter配置linux监控 ...
- JMeter压力测试,http请求压测,5分钟让你学会如何压测接口!
JMeter压力测试 官网:https://jmeter.apache.org 最新款的jmeter需要java8的支持,所以请自行安装jdk8.这里就不啰嗦了. 可以根据自己的系统下载zip或者是t ...
- JMeter压力测试简单使用
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11915535.html JMeter压力测试简单使用: 我们可以使用JMeter来测试一下自己 ...
随机推荐
- python 面向对象编程、获取对象信息
面向对象与面向过程 参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0 ...
- php调用webservice接口,java代码接收不到参数
前段时间做了一个项目的二次开发,有个功能是需要php调用java实现的webservice接口,并传递一些参数给接口,然后按照对方提供的接口说明文档进行传参调用,java那边有接收到请求,但是参数总是 ...
- JavaScript 之 offset 、client、scroll
下面这三组是关于元素大小.位置相关的属性 一.offset 偏移量 1.offsetParent 该属性获取距离当前元素最近的定位父元素,如果没有定位父元素此时是 body 元素 2.offsetLe ...
- APS系统的现状以及与MES系统的关联
MES是智能工厂的核心,将前端产品设计.工艺定义阶段的产品数据管理与后端制造阶段的生产数据管理融合,实现产品设计.生产过程.维修服务闭环协同全生命周期管理. APS就是高级计划排程 应该说APS本来是 ...
- 微服务——SpringCloud(Eureka注册中心搭建)
IDE:IDEA,说实话,真不怎么喜欢用Eclipse这个IDE,太锻炼人了 配置模式:Grandle 微服务框架:SpringCloud 第一步 创建一个Spring Initializr项目 第二 ...
- Win10下免安装版MySQL5.7的安装和配置
1.MySQL5.7解压 2.新建配置文件my.ini放在D:\Free\mysql-5.7.26-winx64目录下 [mysql] # 设置mysql客户端默认字符集 default-charac ...
- idea导入mybatis源码
1.最近在学mybatis,想下载源码导入idea结果网上一查没有一篇完整的,结果让我进了个大坑,算了,废话少说 2.两种办法,一个是git客户端克隆,另外一个是下载code压缩包.先说通过git客户 ...
- Django之 RESTful规范
RESTful 规范 一.什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为"表征 ...
- Django之auth认证
Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的 ...
- java8中日期字符串的月日时分秒自动补零
需求:如字符串2019-7-1 9:6:5转成2019-07-01 09:06:05 java8实现如下: public static String getStartDate(String start ...