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

如何为每个场景实现每分钟4000次请求并夜间重复执行数小时

解决方案

核心修改点

  • 调整请求速率:将目标换算为每分钟4000次请求(约66.67次/秒)
  • 添加循环逻辑:让整个场景序列执行完成后自动重复
  • 设置持续运行时长:指定夜间测试的总时长(比如8小时)

修改后的代码

{
    // 定义每个场景的注入逻辑:稳定保持每分钟4000次请求(换算为≈66.67次/秒)
    PopulationBuilder createScenario = create.injectOpen(constantUsersPerSec(4000.0 / 60).during(Duration.ofMinutes(1)));
    PopulationBuilder getScenario = get.injectOpen(constantUsersPerSec(4000.0 / 60).during(Duration.ofMinutes(1)));
    PopulationBuilder searchScenario = search.injectOpen(constantUsersPerSec(4000.0 / 60).during(Duration.ofMinutes(1)));
    PopulationBuilder downloadScenario = download.injectOpen(constantUsersPerSec(4000.0 / 60).during(Duration.ofMinutes(1)));
    PopulationBuilder deleteScenario = delete.injectOpen(constantUsersPerSec(4000.0 / 60).during(Duration.ofMinutes(1)));

    // 保持原逻辑:随机打乱get/search/download的执行顺序
    List<PopulationBuilder> scenarioList = new ArrayList<>();
    scenarioList.add(getScenario);
    scenarioList.add(searchScenario);
    scenarioList.add(downloadScenario);
    Collections.shuffle(scenarioList);

    // 构建完整场景序列:create → 随机场景 → delete
    ChainBuilder fullScenarioSequence = createScenario
            .andThen(scenarioList)
            .andThen(deleteScenario);

    setUp(
            // 无限重复整个场景序列,直到达到总运行时长
            fullScenarioSequence.repeat(forever())
    )
    .protocols(httpProtocol)
    // 设置夜间测试总时长,示例为8小时,可按需调整
    .maxDuration(Duration.ofHours(8));
}

关键细节说明

  1. 速率换算:直接将每分钟4000次请求转换为每秒速率(4000.0/60),确保每个场景运行时稳定达到目标请求量。
  2. 循环与时长控制:用repeat(forever())实现场景序列的无限重复,配合maxDuration限制总运行时长,避免无限制执行。
  3. 随机顺序保留:延续原代码的场景打乱逻辑,保证每次循环的场景执行顺序不同。
  4. 节流可选:如果担心注入速率波动,可添加全局节流配置,但注意不要同时使用注入速率和节流规则,避免相互冲突导致速率不符合预期:
.throttle(reachRps((int)(4000.0/60)).in(10), holdFor(Duration.ofMinutes(1)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:12:39