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

K6长时间负载测试因指标累积导致内存耗尽问题求助

解决方案

1. 完全禁用指标收集(最直接方案)

既然仅需生成基准负载、不需要任何测试指标,可彻底关闭k6的指标系统:

方式一:命令行参数实现

运行测试时添加以下参数:

k6 run --experimental-disable-metrics --no-summary --no-usage-report your-script.js
  • --experimental-disable-metrics:禁用所有内置/自定义指标,k6不再收集任何指标数据
  • --no-summary:禁止生成最终测试报告
  • --no-usage-report:关闭k6使用情况上报,减少额外内存消耗

方式二:脚本配置实现

在options中添加指标禁用规则:

export const options = {
    userFileName: __ENV.MY_USER_FILE_NAME,
    metrics: {
        enabled: false, // 关闭全量指标收集
    },
    scenarios: {
        // 你的场景配置...
    },
};

配合命令行的--no-summary --no-usage-report运行,效果与方式一一致。

2. 排查并修复高基数指标问题(若需保留部分指标)

如果后续需要保留少量指标,可先定位高基数来源并修复:

  • 检查自定义代码是否将用户ID、唯一时间戳等高基数值设为标签
  • 确认userInfo中的字段是否被无意识用作标签(比如部分函数自动传递标签)
  • 给所有POST请求统一设置固定name标签,强制聚合指标:
    var response = http.post(url.toString(), body, {
        tags: { name: 'backend-unified-post', group: 'backend-api' },
    });
    
    确保所有请求的name标签完全一致,避免生成大量唯一时间序列。

3. 限制时间序列数量(折中方案)

若无法完全禁用指标,可设置k6允许的最大时间序列数,超过阈值后自动丢弃新序列:

export const options = {
    metrics: {
        maxTimeSeries: 1000, // 根据需求调整限制值
    },
    // 其他配置...
};

或通过命令行参数设置:

k6 run --max-metric-time-series 1000 your-script.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:44:50