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
相关产品推荐
相关产品推荐

