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

JMeter中首个线程组设为无限循环时无法启动第二个线程组

解决方案

问题根源

JMeter默认是串行执行线程组,如果第一个线程组设为无限循环,会一直占用执行流程,永远不会触发第二个线程组。

可行方案

方案1:取消线程组串行执行,双线程组并行运行

  1. 打开Test Plan设置,取消勾选Run thread groups consecutively (i.e. one at a time)。此时两个线程组会同时启动,互不阻塞。
  2. 第一个线程组配置:
    • 循环次数设为永远
    • 添加POST请求获取token,之后用__setProperty(access_token, ${token},)函数把token存入全局属性(${token}是你从响应里提取的token变量)
    • 添加Flow Control Action,设置延迟120000毫秒(2分钟),控制每2分钟刷新一次token
  3. 第二个线程组配置:
    • 正常设置循环次数和请求间隔
    • GET请求里用__P(access_token,)引用全局属性的token值

方案2:合并逻辑到单线程组,内置token刷新判断

如果不想用多线程组,把token刷新和业务请求整合到同一个线程组:

  1. 添加While Controller,条件设为true(实现无限循环)
  2. 内部嵌套If Controller,判断逻辑:${__time(,)} - ${last_refresh_time} > 120000
    • 首次执行时last_refresh_time不存在,会自动进入刷新逻辑
    • 刷新token的POST请求放在If Controller内,之后用JSR223 PostProcessor更新时间和全局token:
      vars.put("last_refresh_time", "${__time(,)}");
      props.put("access_token", vars.get("token"));
      
  3. 在While Controller内(If Controller外)添加业务GET请求,使用__P(access_token,)获取token
  4. 添加Constant Timer设置业务请求的执行间隔(比如1000毫秒/次)

注意事项

  • 线程组之间共享变量必须用全局属性(__setProperty/props),普通用户变量(vars)只能在当前线程组内使用
  • 如果token获取失败,要加断言和重试逻辑,避免业务请求使用失效token

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:55:20