Jmeter必知利器-临界部分控制器

本文探讨了使用JMeter进行接口并发测试时遇到的混合场景问题,即多个接口同时执行导致的顺序混乱现象。通过引入CriticalSectionController逻辑控制器解决了这一难题,并确保了业务流程按预期顺序执行。

相信大家在使用开源工具Jmeter 进行接口并发测试时,经常回有混合场景多个接口同时执行的场景,如果我们将一个链条的接口放在线程组下同时执行时,我们使用的 察看结果数 监听器看到的接口执行顺序是混乱的

1 场景预期顺序剖析

例如当前需要将用户登录--生成订单这个场景,进行设置5个并发、持续执行1min压测一下

预期:正常执行顺序就是A-B-C-D  / A-B-C-D .... 按照预期执行 5 次 每个接口执行1min   结果:符合我们的预期

实际:未加任何处理该场景在察看结果数看到的可能是  A-A-A-B-C .. A-A-B-B-B-B...  顺序混乱的执行5 次 ,每个接口执行 1min  结果:完全不符合我们的预期

2 接口实战案例

2.1 以下就是未添加任何处理的混合场景接口,执行的顺序未按照业务正常顺序执行,我们需要解决这个问题,需要使用到我们的逻辑控制器-Critical Section Controller  

2.2 添加逻辑控制器(临界部分控制器)

2.3 总体目录结构

备注:事务控制器  在这里的作用是将6个请求聚合成一个事务,后期在聚合报告中关注这个事务控制器的TPS、响应时间等关键值,达到我们想要的作为一个业务链压测的结果

所以我们这里的临界部分控制器需要丢在逻辑控制器的里面,我们来看看执行的结果察看结果数以及聚合报告  

3 总结

逻辑控制器-Critical Section Controller  的作用以及使用就介绍到这里,作为应用侧接口混合场景压测,这几个利器是必须要安利的,下期再给大家带来精品好文,大家的转发以及分享是对小编最大的支持

免费送笔记本抽奖活动进行中:2020新款笔记本真香,包邮送一台!

历史好文:  在线抓包工具Whistle


近期福利,加小编微信,领取Python学习精品视频,备注 Python 领取

切记要备注 Python 

最后感谢大家一直以来的支持!

### 临界部分控制器概述 JMeter中的临界部分控制器(Critical Section Controller)用于确保在并发测试中,同一时间只有一个线程可以执行其子元素。这对于避免多个线程同时访问共享资源而导致的竞争条件非常有用[^1]。 ### 配置步骤 1. **添加临界部分控制器**: - 在测试计划中,右键点击需要添加控制器的线程组。 - 选择“添加” -> “逻辑控制器-> “临界部分控制器”。 2. **设置名称和注释**: -临界部分控制器的属性窗口中,输入一个有意义的名称和注释,以便于识别和理解其用途。 3. **添加子元素**: - 右键点击临界部分控制器,添加需要在其保护下执行的取样器或其他控制器。 ### 使用场景 - **文件操作**:当多个线程需要读写同一个文件时,防止数据冲突。 - **数据库操作**:确保对数据库的某些关键操作不会被其他线程干扰。 - **资源管理**:保护任何需要独占访问的共享资源。 ### 示例代码 以下是一个简单的示例,展示如何在JMeter中使用临界部分控制器来保护一个HTTP请求: ```java // 假设已经有一个线程组和一个HTTP请求 ThreadGroup threadGroup = new ThreadGroup(); threadGroup.setName("Example Thread Group"); HttpSamplerProxy httpSampler = new HttpSamplerProxy(); httpSampler.setDomain("example.com"); httpSampler.setPort(80); httpSampler.setRequestMethod("GET"); httpSampler.setName("GET Request"); CriticalSectionController criticalSectionController = new CriticalSectionController(); criticalSectionController.setName("Critical Section Controller"); // 将HTTP请求添加到临界部分控制器中 criticalSectionController.addTestElement(httpSampler); // 将临界部分控制器添加到线程组中 threadGroup.addTestElement(criticalSectionController); ``` ### 注意事项 - **性能影响**:由于临界部分控制器会阻塞其他线程,因此应谨慎使用,仅在要时启用。 - **锁范围**:确保临界部分控制器包含所有需要同步的操作,以避免遗漏导致的竞争条件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值