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

如何在JMeter中通过变量实现递增线程数的增量负载测试?

实现JMeter增量负载测试的正确方法

为什么你的原有配置不生效

线程组的线程数参数在测试启动阶段就已确定,后续通过Counter元件修改的变量无法动态更新线程组的线程数量。另外,Counter元件在同一线程组内是针对每个线程的迭代计数,没法控制整个线程组的线程启动规模,这就是你看到每次仅启动1个线程且持续循环的原因。

方法1:用jp@gc - Stepping Thread Group(最推荐)

这是JMeter插件管理器提供的专用线程组,能直接实现阶梯式增量负载:

  • 先装插件:打开JMeter插件管理器,搜索并安装jp@gc - Stepping Thread Group
  • 配置参数:
    • Start Threads Count:填初始线程数(比如10)
    • Threads Ramp-Up:初始线程的启动时长(比如10秒)
    • Hold Load For:初始线程持续运行的时长(比如60秒)
    • Add Threads Count:每次要加的线程数(比如10)
    • Add Threads Ramp-Up:增量线程的启动时长(比如10秒)
    • Repeat:增量循环的次数(比如要到30线程就设2次,因为10→20→30是2次增量)
  • 配置完直接运行,就能自动按10→20→30的阶梯负载执行。

方法2:普通线程组+测试计划循环+属性函数

不想用插件的话,可以这么搞:

  1. 给测试计划设置循环次数,比如要3次增量就设3次
  2. 添加setUp Thread Group(前置线程组),用来计算并设置当前线程数:
    • 加个Counter元件:起始值10,增量10,最大值30,导出变量名设为threadCount
    • 再加个JSR223 Sampler,输入代码:
      props.put("currentThreads", vars.get("threadCount"));
      
  3. 配置主线程组:
    • 线程数填${__P(currentThreads,10)}(10是默认值)
    • 线程组的循环次数设为1(或者你需要的单批次迭代次数)
  4. 运行测试:测试计划每循环一次,前置线程组就更新一次currentThreads属性,主线程组会用新的线程数启动。

方法3:命令行脚本循环启动

习惯用脚本的话,写个shell/batch脚本,每次启动JMeter时指定不同线程数:

  • 示例shell脚本:
    for i in 10 20 30
    do
        jmeter -n -t your_testplan.jmx -JcurrentThreads=$i -l result_$i.jtl
    done
    
  • 每次启动都会用指定的线程数跑测试,完成10、20、30的增量负载。

内容的提问来源于stack exchange,提问作者Юлия Самохина

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:12:41