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

如何在JMeter中实现带线程延迟与关联ID存储的负载测试场景

在JMeter中实现指定负载测试需求的解决方案

一、实现请求间延迟与关联ID存储

  • 请求间特定线程延迟:在请求1的子节点添加Constant Timer,设置Thread Delay (in milliseconds)为目标延迟值(如1000代表1秒);若需随机范围延迟,改用Uniform Random Timer配置上下限。
  • 存储所有请求的关联ID:
    • 根据响应格式选择正则表达式提取器或JSON Extractor,配置规则匹配响应中的关联ID,将结果存入变量(如correlation_id)。
    • 大用户量场景下,用Simple Data Writer持久化数据:在请求1的线程组添加该组件,勾选Save Sampler Variables并指定要存储的变量correlation_id,设置输出路径为correlation_ids.csv;若需自定义格式,也可使用JSR223 PostProcessor写入文件:
      def file = new File("correlation_ids.csv")
      file.append(vars.get("correlation_id") + "\n")
      

二、控制请求1执行15分钟后启动请求2

  • 使用顺序执行的双线程组:
    1. 在测试计划顶部勾选Run thread groups consecutively (i.e. one at a time),确保线程组按顺序运行。
    2. 配置请求1所在线程组:进入Scheduler设置,将Duration (seconds)设为900(15分钟),循环次数设为永远(或根据预期迭代次数设置),线程组会在15分钟后自动停止。
    3. 配置请求2所在线程组:无需设置持续时间,根据请求1生成的关联ID数量,设置对应线程数和循环次数即可。

三、大用户量下的动态值存储与复用

存储方案(高并发友好)

  • 本地文件存储:优先用Simple Data Writer,它比脚本写入更稳定,能避免多线程下的文件IO冲突。
  • 替代方案(超大规模场景):若用户量极大,可借助外部缓存(如Redis):
    • 安装JMeter Redis插件,用JSR223 PostProcessor将关联ID写入Redis集合。
    • 请求2线程组用JSR223 PreProcessor从Redis批量读取ID。

请求2复用动态值

  • 在请求2的线程组添加CSV Data Set Config:
    • 设置Filename为correlation_ids.csv,Variable Names为stored_id。
    • 在请求2的请求体中通过${stored_id}引用存储的动态值即可。

示例流程验证

  1. 请求1线程组启动后,按设置的延迟持续发送请求,同时将每个请求的关联ID写入CSV文件,运行满15分钟后自动停止。
  2. 测试计划自动启动请求2线程组,读取CSV中的所有关联ID,逐个作为请求体参数完成请求发送。

内容的提问来源于stack exchange,提问作者mahaveerr R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:01:23