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
相关产品推荐
相关产品推荐

