JMeter之If Controller深究一

1.背景

大家最近还好么,截止目前新型冠状病毒累计确诊病例已超7万4千多例,希望大家无论是在家办公还是单位办公,一定要注意自我防护。今天跟大家分享一下,最近一次真实生产压测遇到的问题,如题:if controller,本次它是主角。

2.目的

下面进入正题:本次主题是与If逻辑控制器有关,相信有些同学对这个逻辑控制器使用非常熟练。那么这个逻辑控制器到底有什么问题呢?本期宝路就来分享下一次真实生产压测遇到的坑。

伪脚本结构图:

从脚本结构图看出:逻辑性很强,前交易成功才会执行后交易,判断是通过逻辑控制器来实现的。感觉脚本很完美。。。然而在压测过程中却出现了不合乎常理的现象。生产压测结果:

TPS趋势图:

RT趋势图:

恩?RT、TPS趋势图对应关系不对啊。。。。压测过程中TPS呈现逐渐下降趋势,RT趋于平稳,继续增加并发用户数,RT变化不明显,TPS仍呈现逐渐下降趋势。(正常现象:随着并发用户数增加TPS增长,响应时间不变或略有增长;或TPS增长不明显,响应时间增长明显)

开发人员从服务器的日志分析得出:各交易耗时很短,服务器压力并不大。这就有点尴尬了,于是乎就开始了各种排查, 最后由于时间紧迫,最后被迫使用LR11现场编写脚本进行压测。恩?LR11压测却没这个现象,然而LR11并不支持JDK1.7,这也就导致部分重点交易未压测。

回去之后,宝路这边就开始分析到底是什么原因导致这个奇怪的现象。先想着看看能不能复现,如果能复现问题就好解决了。

思路:保持脚本整体结构不变,采用JMeter官方自带的Java Sampler代替原脚本中的sampler,当然如果能自己手写Java Sampler也可以不采用官方自带的(JMeter均采用相同的3.1版本)。大家要自己写Java Sampler的话,可以参考宝路的写的:

为了简单快速验证,我先替换一个请求进行验证(其余请求暂时屏蔽),测试结果:

TPS趋势图:

RT趋势图:

哈哈,复现了。。。。紧接着,我把if逻辑控制器禁用掉并将下面的Sampelr复制到f逻辑控制的上层,大家自行脑补,就不占图了,测试结果如下:

TPS趋势图:

RT趋势图:

从复测结果可以出:TPS、RT曲线 非常稳定。对比两次结果可以看出,问题出在了if逻辑控制器。一开始我怀疑是不是我脚本中的if逻辑控制器使用方法有问题,检查了下,也网上搜了搜相关资料,没啥毛病啊。。。。。

此时给我的感觉就是JMeter3.1版本的if逻辑控制器有严重的性能问题。下篇文章给大家具体分析if逻辑的源码及性能实验验证。

原文地址:https://www.cnblogs.com/leebaul/p/12335438.html

时间: 2024-11-13 06:56:39

JMeter之If Controller深究一的相关文章

jmeter的Include Controller控件和Test Fragment控件和Module Controller控件

1.Include Controller控件--给当前jmeter脚本引入外部片段的jmeter脚本(Test Fragment片段脚本) Include Controller控件--添加外部jmeter片段脚本如下图所示: 2.Test Fragment控件--创建的jmeter片段脚本 Test Fragment控件--新建的jmeter片段脚本如下图所示(如果片段脚本包含线程组.或全局变量的设置,那么只在该片段脚本中有作用,在引用它的主脚本中不起作用) 3.Module Controlle

【jmeter】Include Controller控件&Test Fragment的使用

概念:简单说下Include Controller引用Test Fragment片段问题 Include Controller控件——给当前jmeter脚本引入外部片段的jmeter脚本(Test Fragment片段脚本) 什么意思呢?就是我们新建一个Test Fragment片段,比如我们将脚本保存为login.jmx 一般来说Test Fragment片段有可能是公共使用的jmx脚本,我们可以把它独立出来,在别的项目中使用 那么我们就可以将片段引入. 或者你的Test Fragment片段

JMeter之Throughput Controller详解(实验)

Throughput Contoller,直译是吞吐量控制器,它是用来控制该控制器下面元件的执行次数,与控制吞吐量的功能无关.(注:用Constant Throughput Timer可以控制吞吐量.) Throughput Contoller有两种模式:Total Executions 和Percent Executions. 参数说明如下: Total Executions:按吞吐量值来指定执行次数.选择此模式,吞吐量值的单位为“次”. Percent Executions:按百分比来指定执

jmeter之Throughput Controller

users为5,loop次数改为1,按total Executions,Thoughtput_1为1,Thoughtput_1为2: 不勾选 per user的结果:GetDetailsRequest_1运行次数:1:GetDetailsRequest_2运行次数:2 勾选 per user的结果:GetDetailsRequest_1运行次数:5:GetDetailsRequest_2运行次数:5 users为5,loop次数改为1,按percent Executions,Thoughtput

JMeter之Throughput Controller吞吐量控制器

吞吐量控制器,它是用来控制该控制器下面元件的执行次数,与控制吞吐量的功能无关.(注:用Constant Throughput Timer可以控制吞吐量tps) 作用:控制其子节点的执行次数与负载比例分配 吞吐量控制器有两种模式:Total Executions 和Percent Executions. 参数说明如下: Total Executions:整个测试计划中的总执行次数,按吞吐量值来指定执行次数. Percent Executions:按比例(1%-100%),整个测试计划中执行百分比.

JMeter分布式配置

搭建进行分布式平台测试前提: 1 所有的防火墙应该关闭 2 所有的客户端应该都是在同一个子网中. 3 确保jMeter可以访问这个服务器 4 确保各个客户端的jMeter的版本都是一致的,不同版本的Jmeter可能不会协同工作. 如果这些前提条件你都准备好了,那么你就可以开始远程测试了.jMeter的工作方式就是一个主机会去初始化其它从机的测试案例. 下面我们将一步一步地搭建这个平台, 部署agent: 进入Jmeter的bin目录,然后执行jmeter-server.bat,启动JMeter

JMeter启动代理提示错误

JMeter录制 Target Controller:录制的内容放置目标(一般放到线程组) Grouping: 1.不设置分组,所有的请求全部罗列(一个请求就是一个采样器) 4.每组只存储第一个采样器(内容都存储到访问的URL地址,选中解析所有资源后回放时便能看到所哟请求) URL Patterns to Includle:排除一些不需要的地址(录制过程中可能带出来其他不需要的地址) 在workbench里设置完成参数,作为代理. 然后在浏览器设置链接代理. 地址localhost表明连接本地的

Jmeter分布式压力测试环境配置

在一般情况下一台服务器如果要做大量用户并发的压力测试是扛不住的,基本上jmeter都崩溃.现在我们借助Jmeter提供的Controller+Agent模式搭建一套分布式压力测试环境 角色 IP 操作系统 版本 Controller 192.168.10.103 Windows 10 5.1.1 Agent 192.168.10.210 CentOS 7 5.2.1 Agent 192.168.10.211 CentOS 7 5.2.1 注意:正常情况下,我们建议所有的jmeter的版本要一致,

Jmeter3.0新特性

2016-5-19昨日,Jmeter又更新了新版本. 那么新版本有哪些新特性呢? Changes This page details the changes made in the current version only. Earlier changes are detailed in the History of Previous Changes. Version 3.0 Summary New and Noteworthy Known bugs Incompatible changes B