You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter负载测试场景设计:实现指定并发读写请求方案咨询

JMeter读写并发场景的实现方案

一、核心:拆分线程组精准控制并发

因为读请求(25并发)和CRUD请求(10并发)的量级不同,单个线程组很难精准控制,直接拆成三个线程组:

  • 初始化线程组:专门跑生成关联依赖的前置操作(比如登录拿token、创建测试基础数据),用__setProperty()函数把需要共享的关联值存为全局变量。这个线程组设为线程数1、循环次数1,确保所有依赖数据提前准备完毕。
  • 读请求线程组:线程数设为25,把所有读事务(比如TXN1、TXN3这类只读操作)放进来。如果读事务内部的Sampler有顺序依赖,用事务控制器包起来保证顺序执行。
  • CRUD请求线程组:线程数设为10,放所有增删改事务(比如TXN2这类写操作)。同样用事务控制器管理有依赖的Sampler序列。

二、处理Sampler依赖的控制器

针对事务内部Sampler的顺序依赖问题,用这些控制器搞定:

  • 事务控制器:把一个完整事务的所有Sampler(比如TXN2的7个Sampler)包在一起,确保内部按顺序执行,还能统一统计整个事务的响应时间。勾选「Generate parent sample」可以把整个事务作为一个父样本展示,结果更清晰。
  • 仅一次控制器:如果某个Sampler只需要每个线程启动时执行一次(比如每个CRUD线程先获取一次会话),用这个控制器,避免重复执行浪费资源。
  • 前置处理器:如果需要从全局变量读取关联值,用User Defined Variables或者BeanShell PreProcessor把全局变量转成局部变量,供当前Sampler使用。

三、并发执行的关键细节

  • 全局变量共享:存值用__setProperty(变量名, 值),取值用__P(变量名, 默认值),确保跨线程组能拿到依赖数据。注意初始化线程组必须只跑一次,避免变量被覆盖。
  • 线程组启动顺序:测试计划里不要勾选「Run thread groups consecutively」,这样初始化线程组跑完后,读和CRUD线程组会同时启动,实现读写并发。
  • 事务独立性:尽量保证读和CRUD事务之间没有依赖,如果必须有,一定要在初始化阶段提前处理,别让并发线程互相等待,影响测试结果的准确性。

内容的提问来源于stack exchange,提问作者Farhan Meer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:17:40