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

如何在JMeter中按不同时间段分配差异化的请求负载量

JMeter 分时段差异化负载配置方案

以下是三种可落地的实现方式,按需选择即可:

方案1:使用吞吐量整形计时器(最推荐,配置最简单)

这是针对阶梯/分段负载场景的官方推荐插件方案:

  • 先通过JMeter插件管理器安装 Custom JMeter Plugins 组件包,找到Throughput Shaping Timer插件安装后重启JMeter
  • 在你的业务请求所在线程组下添加该计时器,在Schedule配置区按行填写时段规则,每行三个参数格式为 [时段持续时间(秒)], [目标RPS(每秒请求数)], [启动偏移量(填0即可)]
  • 按你给出的前3小时需求,配置示例如下:

3600, 0.56, 0
3600, 0.83, 0
3600, 0.28, 0

  • 线程数设置为峰值并发所需的1.2倍以上,避免线程不足导致无法达到目标RPS,勾选计时器的Shared Thread Pool选项即可全局生效

方案2:多线程组分段执行(适合需要独立配置不同时段请求逻辑的场景)

不需要额外插件,用原生功能即可实现:

  • 按你需要的时段数量添加对应个数的线程组,每个线程组对应一个时段的负载需求
  • 单个线程组配置示例(以第1小时2000次请求为例):
    • 调度器勾选启用,启动延迟填0,持续时间填3600
    • 线程数和循环次数乘积等于2000即可,比如设20个线程,循环100次
  • 后续时段的线程组依次把启动延迟改为前序所有时段的总时长,比如第2小时启动延迟填3600,第3小时填7200,以此类推
  • 测试计划设置页不要勾选独立运行每个线程组,保证所有线程组按配置的启动时间并行加载

方案3:JSR223 动态控制速率(适合自定义规则非常复杂的场景)

如果你的分段规则需要动态调整,可以用Groovy脚本实现:

  • 在线程组下添加JSR223 PreProcessor,选择Groovy作为脚本语言,填入示例逻辑:
// 计算测试已运行时长(单位:秒)
long testStartTime = ctx.getTestStart() / 1000
long elapsedSec = (System.currentTimeMillis() / 1000) - testStartTime

// 按时段配置RPS
float targetRps
if (elapsedSec < 3600) {
    targetRps = 0.56f // 第1小时 2000次/3600秒
} else if (elapsedSec < 7200) {
    targetRps = 0.83f // 第2小时 3000次/3600秒
} else if (elapsedSec < 10800) {
    targetRps = 0.28f // 第3小时 1000次/3600秒
}
// 后续时段规则自行补充
props.put("dynamic_rps", targetRps)
  • 再添加恒定吞吐量计时器(Constant Throughput Timer),目标吞吐量填写${__P(dynamic_rps, 1)},计算基准选择所有活跃线程的总吞吐量即可

验证注意事项

测试前建议先做短时间压测验证,比如把1小时时长改成1分钟,请求量等比缩小,查看Summary Report的Samples总数是否符合预期,确认配置无误后再跑10小时全量测试,正常误差范围在1%以内。


内容的提问来源于stack exchange,提问作者James P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:57:03