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

Gatling中pause(duration)位置存疑,求完整可运行示例及排查方案

Gatling 请求间添加暂停的正确示例

你的代码问题在于:把pause放在了整个请求块的前面,且多个HTTP请求被包裹在同一个exec方法中——Gatling会一次性执行同一个exec里的所有请求,自然不会在它们之间产生暂停。

要实现请求之间的暂停,需要将pause放在独立的exec步骤之间,以下是完整可运行的示例:

import io.gatling.javaapi.core.*;
import io.gatling.javaapi.http.*;
import java.time.Duration;

public class RequestPauseSimulation extends Simulation {

    // 配置HTTP协议基础参数
    HttpProtocolBuilder httpProtocol = http
            .baseUrl("https://example.com") // 替换为你的目标服务地址
            .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
            .acceptEncodingHeader("gzip, deflate")
            .userAgentHeader("Gatling/PerformanceTest");

    // 定义带请求间暂停的场景
    ScenarioBuilder scenario = scenario("请求间暂停演示场景")
            // 第一个请求
            .exec(http("首页请求").get("/"))
            // 第一个请求与第二个请求之间暂停5秒
            .pause(Duration.ofSeconds(5))
            // 第二个请求
            .exec(http("列表页请求").get("/items"))
            // 第二个请求与第三个请求之间暂停3秒
            .pause(Duration.ofSeconds(3))
            // 第三个请求
            .exec(http("详情页请求").get("/items/1"));

    // 启动仿真配置
    {
        setUp(
                scenario.injectOpen(atOnceUsers(1))
                        .constantPauses() // 全局固定暂停策略,确保pause时长严格生效
        ).protocols(httpProtocol);
    }
}

关键说明:

  • 每个独立的HTTP请求放在单独的exec方法中,pause放在两个exec之间,就能实现请求间的等待。
  • constantPauses()用于全局配置,保证场景中定义的暂停时长被精确执行(默认Gatling会对暂停时长做随机波动,若需要固定值则加上此配置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:12:37