JMeter之If Controller深究(1)

发表于:2020-2-25 10:56  作者:leebaul   来源:宝路测试手记

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: 性能测试工具 Jmeter JMeter

  大家最近还好么,截止目前新型冠状病毒累计确诊病例已超7万4千多例,希望大家无论是在家办公还是单位办公,一定要注意自我防护
  下面进入正题:本次主题是与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逻辑的源码及性能实验验证。

     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

评 论

论坛新帖

顶部 底部


建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海瀛东律师事务所 张楠律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2020, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道