首页 > 其他分享 >Jmeter逻辑控制器(四)

Jmeter逻辑控制器(四)

时间:2024-01-31 23:34:51浏览次数:45  
标签:1234 控制器 Jmeter 多线程 锁名 逻辑 线程 执行

一、前言

环境: window 10 Jmeter 5.3

二、逻辑控制器

1 临界部分控制器

这个翻译的名字感觉挺拗口的,和边界其实也没啥关系,大家都这样叫,就随大流吧

The Critical Section Controller ensures that its children elements (samplers/controllers, etc.) will be executed by only one thread as a named lock will be taken before executing children of controller

上面是官网对它的介绍,翻译过来大概是
临界区控制器确保其子元素(采样器/控制器等)将只由一个线程执行,因为在执行控制器的子元素之前将获得一个命名锁

个人理解的意思是,一个线程在执行该控制器下的子节点时,会生成一把锁锁住该控制器,其它线程进不来暂时无法执行该控制器,只能等锁释放后由其它线程执行。该控制器的子节点在同一时间将只能被一个线程执行(这让我想到了mysql里面的不同级别的锁的机制),也就是说在多线程的情况下,该控制器下的子节点是一个线程执行完了才有另一个线程执行

image
如上,控制器的输入数据也挺简单,名字和锁名

1.1 例子

该控制器由于只能被一个线程执行,我们就设置多个线程,在有控制器和无控制器2个场景对比下

有控制器的情况
image
查看结果树
image

如上,会发现执行顺序很有规律 1234 1234 ,而且是第一个线程的1234执行完后再执行第二个线程的1234再是后面线程

无控制器的情况
image
查看结果树
image

如上,一眼看去,执行结果比较混乱,但看详细信息会发现,对于单个线程来说,子节点的执行顺序仍是我们定义事的顺序1234,只不过在一个线程执行的中间,有另外一个并发线程的接口在执行

1.2 其它

看其它博主的分享,说是多线程情况下,锁名是不变的话,每个线程都会遇到同一个锁锁住控制器,只有在一个线程的控制器执行完成释放锁后,另一个线程才能执行同时再次锁住控制器,这就变成一个串行的过程,执行时间会增加,这样就达不到压力测试的并行执行的要求

如果锁名是动态变化的话,每个线程拿到的是不同的锁,他们之间互不影响,这样控制器就能并行执行了(有点像mysql中更低级别的锁),总的执行时间减少

以上锁名动态而并行的观点,在官方并未给出解释,本人也无法验证锁名动态的情况下就是在并行处理,不过执行时间确实可以减少

锁名动态的话,名字可以为空,或者用线程数或者随机数命名,这样名字就不会重复

如下是一个例子
image

image

如上 ,这样好像和不用该控制器效果是一致的,这样用它的意义是什么呢

有没有用临界部分控制器的动态锁同时保证接口的执行顺序完全和定义的一样呢,

经过多方查证,终于看到有前辈实现了,是在控制器前面再加一个事务控制器,同时勾选事务控制器的第一个选项
如下
image
image
image
执行
image

至于锁名动态变化,多线程状态下,如何控制器是否并行运行,个人暂时无法验证,请朋友们献言献策

标签:1234,控制器,Jmeter,多线程,锁名,逻辑,线程,执行
From: https://www.cnblogs.com/MyRecords/p/17999376

相关文章

  • 11.jmeter用户定义变量、请求头管理器、json提取器、CSV导入数据
     ......
  • jmeter
    jmeter1.前置依赖1.安装jmeter https://jmeter.apache.org/download_jmeter.cgi 2.安装jdk(jdk8+) https://www.oracle.com/java/technologies/java-se-glance.html2.jdk安装java-version3.jmeter安装4.jmeter实例4.1线程组4.2HTTP请求4.3......
  • Prometheus+Grafana+Jmeter监控服务器资源及中间件(Prometheus & node_exporter &mysq
    一、Prometheus&node_exporter&Grafana的原理Prometheus:Prometheus是一个开源的系统监控和报警工具包,它负责定时从各种数据源(如NodeExporter)中获取指标数据,并将其存储在自己的时间序列数据库中。Prometheus支持灵活的查询和报警功能,用户可以方便地对这些指标数据进行查询......
  • 基于EPCLYPS的DDS控制器(二)
    关于ZmodAWGControllerZmodAWGController介绍双击IP核,进入的第一个界面会有Ch1GainStaticConfiguration的选项修改为“0”-->"1",其余不用修改其中右边的端口是连接SYZYGYPorts接口(若不用DAC,则sInitDoneDAC和sConfigError可以不用连接)关于左边端口SysClk100......
  • Jmeter边界提取器
    边界提取器(BoundaryExtractor)是放在Sample请求之后执行的,用于获取左右边界中间的所有字符(不包含边界)。 组件路径:HTTP请求->右键添加->后置处理器->边界提取器适用场景:A接口响应数据json字段有几十个,其中B接口请求体需要用到A接口90%的字段,这时可以使用[边界提取器]去批量获......
  • 用模糊神经网络控制器来实现一个控制系统
    问题的阐述:需要用模糊神经网络控制器来实现一个控制系统,使得输入变量e和ec的范围为[-2,2],并且达到目标误差emin=0.001。输入、输出矢量:输入矢量为e和ec,范围为[-2,2],即e,ec∈[-2,2]。输出矢量为控制器的输出,用来控制系统的行为。网络结构:模糊神经网络控制器由两个部分组成:模......
  • jmeter 接口测试响应unicode编码为中文显示
    添加一个后置处理器beanshellpostprocessor, public StringresUnicoding(StringresMsg){   String[]asciis=resMsg.split("\\\\u");   StringnativeValue=asciis[0];   try   {      for(inti=1;i<asciis.length;i++......
  • Jmeter: 逻辑控制器(三)
    一前言环境window10Jmeter5.3二逻辑控制器1简单控制器如图逻辑控制器没有什么需要输入的地方,直接在合适的地方添加使用即可作用:整理分类分组的作用,在使用Jmeter时,可以把你认为可以归类到一起的东西放在一个简单控制器下,就像放在一个文件夹或模块,如上图,看的时候更......
  • Vulkan学习苦旅04:创建设备(逻辑设备VkDevice)
    设备是对物理设备的一种抽象,使我们更加方便地使用它。更准确地说,应该称其为“逻辑设备”,但由于逻辑设备在Vulkan中极为常用,后面几乎所有的API都需要它作为第一个参数,因此在Vulkan中直接简称为设备。1.实例、物理设备与设备的关系在之前的几篇文章中,我们依次创建了实例和物理设......
  • 分布式压测之locust和Jmeter的使用
    受限于单台机器的配置问题,我们在单台机器上达不到一个很高的压测并发数,那这个时候就需要引入分布式压测分布式压测原理:一般通过局域网把不同测试计算机链接到一起,达到测试共享、分散操作、集中管理的目的。选择一台作为调度机(MASTER),其他机器作为执行机(SLAVE)执行完成执行机会......