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

如何在Gatling的HTML报告中用服务端执行时间替换默认统计耗时

Gatling自定义服务端执行时间统计操作流程

以下是完整操作步骤,适配Gatling 3.x及以上版本:

1. 提取响应中的服务端执行时长

在请求的校验规则中,从响应体提取出接口返回的服务端执行时长字段,转换为数值类型后存入会话变量,示例代码如下(以JSON响应的server_cost字段为例):

http("测试业务接口")
  .post("/api/your/interface")
  .body(StringBody("""{"testParam": "xxx"}"""))
  .check(jsonPath("$.server_cost").ofType[Long].saveAs("serverExecTime"))

2. 编写自定义耗时上报逻辑

Gatling默认统计的是请求从发出到全量接收响应的端到端耗时,要替换该统计值,需要手动向Gatling的统计模块上报自定义的耗时数据,实现代码如下:

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.core.result.message.{OK, KO, Status}
import io.gatling.core.result.writer.DataWriterClient

// 自定义统计上报函数
val reportByServerTime = exec(session => {
  // 取出之前存入会话的服务端执行时长
  val serverExecTime = session("serverExecTime").as[Long]
  // 手动上报统计数据,将耗时替换为服务端返回值
  DataWriterClient.writeRequestData(
    session = session,
    requestName = "测试业务接口", // 和你实际的请求名称保持一致
    requestGroups = Nil,
    status = OK, // 请求失败时可改为KO,同时传入错误信息
    startTimestamp = 0,
    endTimestamp = serverExecTime, // 统计时会直接取end-start作为耗时,这里直接赋值为服务端返回的时长即可
    errors = Nil,
    groupHierarchy = None
  )
  session
})

3. 关闭原请求的默认统计

为了避免默认统计和自定义统计重复上报,需要给原请求增加静默配置,关闭其默认统计能力:

http("测试业务接口")
  .post("/api/your/interface")
  .body(StringBody("""{"testParam": "xxx"}"""))
  .check(jsonPath("$.server_cost").ofType[Long].saveAs("serverExecTime"))
  .silent // 新增该行,关闭默认统计

4. 组装场景执行压测

在压测场景中,先执行请求,再执行自定义上报函数即可,示例场景配置:

val scn = scenario("自定义耗时统计压测场景")
  .exec(
    http("测试业务接口")
      .post("/api/your/interface")
      .body(StringBody("""{"testParam": "xxx"}"""))
      .check(jsonPath("$.server_cost").ofType[Long].saveAs("serverExecTime"))
      .silent
  )
  .exec(reportByServerTime) // 在请求后执行上报逻辑

setUp(scn.inject(atOnceUsers(10))).protocols(httpProtocol)

执行压测后生成的HTML报告,所有耗时统计都会使用你上报的服务端实际执行时间,效果如下:
示例图

注意:如果存在部分接口未返回服务端执行时长的情况,可自行添加判断逻辑,未获取到服务端时长时可以选择用默认端到端耗时上报,或者设置固定兜底值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:51:00