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

JMeter如何获取最后一次请求的Latency(请求耗时)

JMeter获取上一请求耗时实现固定间隔等待逻辑

完全可以实现,JMeter内置了直接取上一个采样器执行结果的对象,不需要额外装插件,推荐用性能最好的JSR223 + Groovy方案实现,步骤如下:

核心取值说明

首先明确两个容易混淆的时间字段,按需取用:

  • Latency:请求发出到收到第一个响应字节的首包耗时,通过prev.getLatency()获取
  • 请求完整持续时长:请求发出到接收完所有响应内容的总耗时,也就是你计算等待时间需要用到的值,通过prev.getTime()获取
    两个值的单位都是毫秒。

具体实现步骤

  • 在你需要执行等待逻辑的位置(也就是上一个HTTP请求执行完、下一个业务逻辑执行前的位置)添加JSR223 定时器,脚本语言选择Groovy(JMeter默认内置,性能远高于BeanShell)
  • 在脚本输入框粘贴以下代码:
// 读取上一个采样器的总执行耗时
def lastRequestCost = prev.getTime()
// 计算需要等待的时长:总间隔10秒=10000毫秒,减去已消耗的请求时间,最小等待值设为0避免负数
def needWaitMs = Math.max(0, 10000 - lastRequestCost)
// 直接返回等待时长,JSR223定时器会按返回的毫秒数自动执行等待
return needWaitMs
  • 不需要额外配置其他元件,脚本运行时就会自动补足10秒的总间隔:如果上一个请求跑了3秒,就自动等7秒;如果上一个请求本身跑了12秒,就直接继续执行不等待。

注意事项

  • prev是JMeter内置的采样器结果对象,永远指向最近一次执行完成的采样器,中间加的定时器、前置/后置处理器、断言等非采样器元件不会改变它的取值
  • 如果你需要把这个等待时间存下来给其他元件用,可以在脚本里加一行vars.put("waitTime", needWaitMs.toString()),后续就可以通过${waitTime}引用这个值
  • 不要用BeanShell实现同类逻辑,高并发场景下BeanShell的性能损耗会导致压测结果失真

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:09:23