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

如何在JMeter中捕获curl手册定义的HTTP请求时间参数

在JMeter中捕获curl风格的请求时序指标并生成报表

需求说明

从指定URL获取文件时,需要捕获以下时序指标:

  • DNS解析时间(time_namelookup)
  • 连接建立时间(time_connect)
  • TLS握手完成时间(time_appconnect)
  • HTTP请求开始传输前时间(time_pretransfer)
  • HTTP响应开始传输时间(time_starttransfer)
  • HTTP响应完成总时间(time_total)

现有curl实现方式

你已能通过Mac终端的curl命令捕获这些指标,命令如下:

curl -w "@curl-format.txt" -o /dev/null -s "https:///large5-1663346153.bmp"

对应的curl-format.txt内容为:

time_namelookup:  %{time_namelookup}s

time_connect:  %{time_connect}s

time_appconnect:  %{time_appconnect}s

time_pretransfer:  %{time_pretransfer}s

time_redirect:  %{time_redirect}s

time_starttransfer:  %{time_starttransfer}s

----------

time_total:  %{time_total}s

在JMeter中实现的步骤

1. 配置HTTP请求采样器

  • 添加线程组:右键测试计划→「添加」→「Threads(Users)」→「线程组」
  • 添加HTTP请求:右键线程组→「添加」→「取样器」→「HTTP请求」
  • 配置请求参数:填入目标URL,请求方法选择GET

2. 提取时序指标

JMeter的HTTP采样器内置了这些时序数据,可通过两种方式提取:

直接使用内置变量

每个HTTP请求完成后,可直接引用以下内置变量获取对应指标(单位:秒):

  • DNS解析时间:${JMeterThread.last_sample.time_namelookup}
  • 连接建立时间:${JMeterThread.last_sample.time_connect}
  • TLS握手时间:${JMeterThread.last_sample.time_appconnect}
  • 请求预传输时间:${JMeterThread.last_sample.time_pretransfer}
  • 响应开始传输时间:${JMeterThread.last_sample.time_starttransfer}
  • 总请求时间:${JMeterThread.last_sample.time_total}

用JSR223后置处理器提取为自定义变量

若需要将指标保存为可复用的变量,添加JSR223后置处理器:

  1. 右键HTTP请求→「添加」→「后置处理器」→「JSR223后置处理器」
  2. 在脚本框中输入Groovy代码(将毫秒转换为秒,和curl格式一致):
def sampleResult = ctx.getCurrentSampler().getSampleResult()
// 提取并保存各指标为变量
vars.put("time_namelookup", String.valueOf(sampleResult.getTimeNamelookup() / 1000))
vars.put("time_connect", String.valueOf(sampleResult.getTimeConnect() / 1000))
vars.put("time_appconnect", String.valueOf(sampleResult.getTimeAppConnect() / 1000))
vars.put("time_pretransfer", String.valueOf(sampleResult.getTimePreTransfer() / 1000))
vars.put("time_starttransfer", String.valueOf(sampleResult.getTimeStartTransfer() / 1000))
vars.put("time_total", String.valueOf(sampleResult.getTime() / 1000))

3. 生成包含指标的报表

实时查看指标

添加「查看结果树」监听器,选择「Sampler Result」标签,可直接看到包含所有时序指标的详细信息。

导出为CSV文件

添加「简单数据写入器」:

  1. 右键线程组→「添加」→「监听器」→「简单数据写入器」
  2. 设置输出文件路径(如timing-results.csv)
  3. 勾选「自定义字段」,输入要保存的变量名:time_namelookup,time_connect,time_appconnect,time_pretransfer,time_starttransfer,time_total
  4. 运行测试后,CSV文件会记录每一次请求的时序数据,方便后续分析。

生成自定义HTML报表

若需要可视化报表,可修改JMeter的报表模板:

  1. 复制JMeter安装目录下的report-template文件夹,修改模板文件(如summary.tpl),添加对应指标的展示代码
  2. 运行测试生成JTL结果文件后,执行以下命令生成自定义报表:
jmeter -g 测试结果.jtl -o 报表输出目录 -t 自定义模板路径

内容的提问来源于stack exchange,提问作者R.Srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:20:27