K6 中 VU 的静态变量

问题描述

有没有办法在 K6 中使用跨 VU 共享的静态变量。

// init code
let x = 0 // i want this to be static
// options
export let options = {
  vus : 10,iterations : 10
};
// VU code
export default function() {
  x++;
  console.log(x);
}

当我运行这段代码时,输​​出应该是增量的(1 到 10)而不是 1 打印 10 次(每个 VU 1 次)。

解决方法

在 k6 中,每个 VU 都是单独的独立 JS 运行时,因此您实际上拥有 x 的 10 个副本。目前,库存 k6 无法解决这个问题,您必须通过 HTTP 或类似方式使用一些外部服务作为递增计数器。或者,如果您将在本地仅在单个实例上运行 k6,则可以使用此 xk6 扩展 (more info):https://github.com/MStoykov/xk6-counter。它是最初为 https://community.k6.io/t/unique-test-data-per-vu-without-reserving-data-upfront/1136/3 开发的 PoC,但可以轻松扩展。