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

K6脚本Create阈值显示为0且标签不匹配问题求助

K6脚本本地与云端标签/阈值异常问题排查与解决

问题现象

  • 本地以1个VU运行脚本时,Create请求的阈值显示通过但数值为0,调整阈值表达式"http_req_duration{name:${}/cases,method:PUT}": ["max < 100"]后无改善
  • 上传至K6 Cloud后,Cancel请求能正常显示自定义标签,而Create请求显示完整端点而非设置的标签
  • 已尝试:增加gracefulStop时长、修改端点写法、更换端点,均未解决

1. 先确认请求标签的定义是否准确

必须在http.put()请求中明确设置name标签,避免动态变量拼接导致的匹配失效:

// 正确写法:固定标签名,确保阈值能精准匹配
http.put(`${baseUrl}/cases`, payload, {
  tags: { name: "Create" }
});

如果要用动态标签,本地加console.log()打印实际生成的标签值,验证是否和阈值表达式中的字符串完全一致——K6的阈值标签匹配是精确匹配,哪怕多一个空格都会导致匹配失败。

2. 修正阈值表达式的匹配规则

如果你的name标签是固定的"Create",阈值表达式要对应写死:

thresholds: {
  "http_req_duration{name:Create,method:PUT}": ["max < 100"],
},

不要用${}/cases这种动态语法写在阈值里,除非你能确保运行时生成的标签和这个字符串完全一致,否则会出现“阈值统计为0”的情况——本质是没有匹配到任何请求。

3. 云端标签显示异常的排查

  • 检查脚本是否有重复标签覆盖:比如某个逻辑分支里重新给Create请求设置了name标签,或者请求发送时标签参数未正确传递
  • 查看云端测试的原始日志:在K6 Cloud的测试详情中,找到http_req的日志条目,直接看name字段的实际值,确认是否和脚本中设置的一致
  • 确认云端测试配置和本地一致:比如是否启用了会修改标签的扩展,K6 Cloud不会自动覆盖自定义标签,大概率是脚本本身的标签逻辑有问题

4. 1个VU场景的特殊排查点

本地单VU运行时,如果请求没被执行到,也会导致阈值数值为0:

  • 在Create请求后加console.log("Create请求已执行"),确认请求是否真的触发
  • 检查请求响应状态,确保请求成功发送:K6默认统计成功请求的指标,如果请求失败且未被标记为错误,可能会被排除在阈值统计外,可以用check断言验证:
const createRes = http.put(...);
check(createRes, { "Create请求成功": (r) => r.status === 200 });

修正后的脚本示例片段

import http from 'k6/http';
import { check } from 'k6';

export const options = {
  vus: 1,
  thresholds: {
    "http_req_duration{name:Create,method:PUT}": ["max < 100"],
    "http_req_duration{name:Cancel,method:POST}": ["max < 100"],
  },
};

export default function () {
  const baseUrl = "https://your-api.com";
  
  // Create请求:明确设置固定标签
  const createPayload = JSON.stringify({ key: "value" });
  const createRes = http.put(`${baseUrl}/cases`, createPayload, {
    headers: { "Content-Type": "application/json" },
    tags: { name: "Create" }
  });
  check(createRes, { "Create请求成功": (r) => r.status === 200 });
  
  // Cancel请求:正确设置标签
  const cancelRes = http.post(`${baseUrl}/cases/cancel`, null, {
    tags: { name: "Cancel" }
  });
  check(cancelRes, { "Cancel请求成功": (r) => r.status === 200 });
}

内容的提问来源于stack exchange,提问作者Sinem Kırtaç

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:08:13