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深究一的更多相关文章

  1. JMeter之If Controller深究二

    1.背景 接上文JMeter之If Controller深究一,在上文中提到压测采用的是JMeter3.1版本,本篇继续深究.基本确定问题原因后,宝路这边又做了不同版本的JMeter对比实验,这次加入 ...

  2. jmeter之Throughput Controller

    jmeter之Throughput Controller Throughput Controller 这个控制器的命名不准确,因为它不是用来控制吞吐量的.吞吐量控制器允许用户控制执行频率,jmeter ...

  3. jmeter 之 if controller

    jmeter版本5.0.下面是jmeter5.0的if逻辑控制器的截图 标红字体的意思大概是,如果勾选了 下面的 interpret condition as variable expression ...

  4. jmeter 逻辑控制器Logic Controller详解

    Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...

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

    1.Include Controller控件——给当前jmeter脚本引入外部片段的jmeter脚本(Test Fragment片段脚本) Include Controller控件——添加外部jmet ...

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

    概念:简单说下Include Controller引用Test Fragment片段 Include Controller控件——给当前jmeter脚本引入外部片段的jmeter脚本(Test Fra ...

  7. Jmeter的逻辑控制器——Controller

    逻辑控制器(Logic Controller) --贯穿整个Test Plan中,与各组件执行顺序没关系:目的是用于控制采样器的执行顺序. Simple Controller Simple Contr ...

  8. JMeter之Throughput Controller详解(实验)

    Throughput Contoller,直译是吞吐量控制器,它是用来控制该控制器下面元件的执行次数,与控制吞吐量的功能无关.(注:用Constant Throughput Timer可以控制吞吐量. ...

  9. Jmeter逻辑控制器-ForEach Controller

    ForEach Controller 介绍 ForEach Contoller 即循环控制器,顾名思义是定义一个规则.主要有以下一个参数: 名称:随便填写 注释:随便填写 输入变量前缀:可以在&quo ...

随机推荐

  1. C# WPF 嵌入网页版WebGL油田三维可视化监控

    0x00 楔子 最近做的一个项目,是一个油田三维可视化监控的场景编辑和监控的系统,和三维组态有些类似,不过主要用于油田上. 效果如下图所示: 首先当然是上模型,设计人员跟进. 有了相关的模型,使用我们 ...

  2. C++ string 常用函数

    C++ String常用函数 一,类型别名 size_type 无符号整型 iterator 迭代器类型 const_iterator 只读迭代器 reverse_iterator 逆序迭代器 con ...

  3. C++Primer第五版 3.5.1节练习

    练习 3.27:假设txt_size是一个无参数的函数,它的返回值是int.请回答下列哪个定义是非法的?为什么? Unsigned buf_size = 1024; (a) int ia[buf_si ...

  4. python检查是奇数还是偶数

    检查的依据:奇数除2余1:偶数除2无余数 num = int(input("请输入一个整数:")) if num % 2 == 1: print(num,"是奇数&quo ...

  5. cogs 1583. [POJ 3237] 树的维护 树链剖分套线段树

    1583. [POJ 3237] 树的维护 ★★★★   输入文件:maintaintree.in   输出文件:maintaintree.out   简单对比时间限制:5 s   内存限制:128 ...

  6. AVL练习题——宠物收养所

    题目描述 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特殊的公式,得出 ...

  7. python3 密码字典匹配wifi密码,有界面

    界面: 需要先安装一下pywifi模块 代码: # coding:utf-8 from tkinter import * from tkinter import ttk import pywifi f ...

  8. [校内训练19_09_02]C

    题意 给出一棵N 个节点的树,树上的每个节点都有一个权值$a_i$. 有Q 次询问,每次在树上选中两个点u, v,考虑所有在简单路径u, v 上(包括u, v)的点构成的集合S. 求$\sum_{w∈ ...

  9. mac安装了anaconda但是在终端不能使用conda命令

    只需在终端输入如下命令即可 export PATH=~/anaconda3/bin:$PATH

  10. Macbook 安装 opencv(cv2) 及在pycharm 下的使用

    python和opencv的安装都很顺利,就是在PyCharm下的配置浪费了一点时间. 一.原料 1.max系统 2.python(本文用的版本是3.6.5) 3.opencv(本文中使用的版本是3. ...