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逻辑的源码及性能实验验证。
JMeter之If Controller深究一的更多相关文章
- JMeter之If Controller深究二
1.背景 接上文JMeter之If Controller深究一,在上文中提到压测采用的是JMeter3.1版本,本篇继续深究.基本确定问题原因后,宝路这边又做了不同版本的JMeter对比实验,这次加入 ...
- jmeter之Throughput Controller
jmeter之Throughput Controller Throughput Controller 这个控制器的命名不准确,因为它不是用来控制吞吐量的.吞吐量控制器允许用户控制执行频率,jmeter ...
- jmeter 之 if controller
jmeter版本5.0.下面是jmeter5.0的if逻辑控制器的截图 标红字体的意思大概是,如果勾选了 下面的 interpret condition as variable expression ...
- jmeter 逻辑控制器Logic Controller详解
Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...
- jmeter的Include Controller控件和Test Fragment控件和Module Controller控件
1.Include Controller控件——给当前jmeter脚本引入外部片段的jmeter脚本(Test Fragment片段脚本) Include Controller控件——添加外部jmet ...
- 【jmeter】Include Controller控件&Test Fragment的使用
概念:简单说下Include Controller引用Test Fragment片段 Include Controller控件——给当前jmeter脚本引入外部片段的jmeter脚本(Test Fra ...
- Jmeter的逻辑控制器——Controller
逻辑控制器(Logic Controller) --贯穿整个Test Plan中,与各组件执行顺序没关系:目的是用于控制采样器的执行顺序. Simple Controller Simple Contr ...
- JMeter之Throughput Controller详解(实验)
Throughput Contoller,直译是吞吐量控制器,它是用来控制该控制器下面元件的执行次数,与控制吞吐量的功能无关.(注:用Constant Throughput Timer可以控制吞吐量. ...
- Jmeter逻辑控制器-ForEach Controller
ForEach Controller 介绍 ForEach Contoller 即循环控制器,顾名思义是定义一个规则.主要有以下一个参数: 名称:随便填写 注释:随便填写 输入变量前缀:可以在&quo ...
随机推荐
- 3 分钟带你深入了解 Cookie、Session、Token
经常会有用户咨询,CDN 是否会传递 Cookie 信息,是否会对源站 Session 有影响,Token 的防盗链配置为什么总是配置失败?为此,我们就针对 Cookie.Session 和 Toke ...
- JAVA高级架构师基础功:Spring中AOP的两种代理方式:动态代理和CGLIB详解
在spring框架中使用了两种代理方式: 1.JDK自带的动态代理. 2.Spring框架自己提供的CGLIB的方式. 这两种也是Spring框架核心AOP的基础. 在详细讲解上述提到的动态代理和CG ...
- leetcode 最大水池
leetcode 11题 水池最大容积 题目描述 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 ( ...
- Drupal SA-CORE-2019-010 .开头文件名(如.htaccess) 文件上传
目录 drupal .开头文件名 文件上传 原生模块分析 第三方模块分析 补丁 参考 drupal .开头文件名 文件上传 通过diff 8.8.1的补丁,很容易发现修复点,位于core\module ...
- Unity3d组件实现令人惊叹的像素粒子特效!
我们先看看两个特效,感受一下,有没有学习的动力? =========================================================================== ...
- 客户端TNSPING通 连接出现ORA-12514错误
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务,这是一个经常遇到的问题,可以按照以下步骤一步步解决 1.使用tnsping检测 tnsping可判断出以下两点(1)判断网络 ...
- SEO 搜索 形成一个关联
- 关于 C#和.net 的 发展
591. C# 1 的 委托 语法 看起来 似乎 并不 太坏 [2016-04-27 09:00:56]592. C# 2 支持 从 方法 组 到 一个 兼容 委托 类型 的 隐式 转换. [2016 ...
- SpringBoot_Web开发_定制错误数据
SpringBoot默认的错误处理机制 默认效果: 1).浏览器,返回一个默认的错误页面 2).如果是其他客户端,默认响应一个json数据 原理: 可以参照ErrorMvcAutoConfig ...
- 【转】在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)
原文:http://www.cyqdata.com/cnblogs/article-detail-35876# 背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件 ...