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

如何在JMeter中统计循环请求到指定响应的耗时并生成报告

JMeter实现Job状态轮询耗时统计及报告生成方案

1. 前置准备:记录轮询开始时间

在While Controller之前添加一个JSR223 PreProcessor,写入以下代码记录轮询启动的时间戳:

// 记录开始时间,单位毫秒
vars.put("loopStartTime", String.valueOf(System.currentTimeMillis()));

2. 循环内补充字段提取

你现有逻辑已经提取了Status变量,需要新增提取逻辑从API响应中拿到jobID字段:

  • 用JSON Extractor(如果响应是JSON格式)或者正则表达式提取器,将提取的jobID存为JMeter变量jobID
  • 确保提取逻辑放在API请求的子节点下,保证每次请求都更新最新的字段值

3. 循环结束后计算耗时并生成报告

在While Controller之后添加一个JSR223 PostProcessor,写入以下代码完成耗时计算和报告写入:

long startTime = Long.parseLong(vars.get("loopStartTime"));
long endTime = System.currentTimeMillis();
// 耗时默认单位为秒,要保留毫秒的话去掉/1000即可
long totalCost = (endTime - startTime) / 1000;
vars.put("totalCost", String.valueOf(totalCost));

// 写入CSV报告,多线程运行时要加同步锁避免文件写入冲突
synchronized(this) {
    FileWriter fw = new FileWriter("job_status_report.csv", true);
    BufferedWriter bw = new BufferedWriter(fw);
    // 首行可以手动加表头:jobID,status,cost_time(秒)
    bw.write(vars.get("jobID") + "," + vars.get("Status") + "," + vars.get("totalCost") + "\n");
    bw.close();
    fw.close();
}

4. 可选:整合到JMeter原生报告

如果需要把三个字段同步到JMeter自带的HTML报告中,可以修改jmeter.properties配置:

  • 找到sample_variables配置项,修改为:
    sample_variables=jobID,Status,totalCost
    配置后运行生成的.jtl结果文件会自带这三个字段,原生HTML报告中也可以直接查看和统计。

补充说明

你现有循环条件设置了最多300次轮询,若触发上限退出循环,报告中会自动记录非Ready的异常状态和对应耗时,不需要额外做判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:54:07