【问题标题】:K6 Stress Test with shuffled images使用打乱图像的 K6 压力测试
【发布时间】:2020-08-24 01:42:52
【问题描述】:

上下文

  • 我正在构建要由 K6 加载和执行的 javascript 文件 工具。
  • 它将用于压力和尖峰测试。
  • 我的 POST 请求将包含 1 个图像和 1 个 ID
  • 我想在 7 个已知选项中使用随机图像
  • 我要随机生成id

问题

我应该在哪里随机化将在请求中使用的图像和 de id?在“init context”还是“vu context”?

考虑“初始化上下文”的代码

let rand_id = getRandomInt(10000,99999)
let image = open("face"+getRandomInt(0,6)+".jpg","b")

export default function() {
    group("post_request", function() {
        http.post("https://my_api", {
            "id": rand_id,
            "image": http.file(image),
        })
    });
}

考虑“vu 上下文”的代码

let images = []
for (i=0; i <= 6; i++) {
  images.push(open("face"+i+".jpg","b"))
}

export default function() {
    group("post_request", function() {
        http.post("https://my_api", {
            "id": getRandomInt(10000,99999),
            "image": http.file(open(images[getRandomInt(0,6)],"b")),
        })
    });
}

【问题讨论】:

    标签: stress-testing k6


    【解决方案1】:

    tl;dr 鉴于您希望它是随机的 - “vu context”

    k6 test lifecycle 中所述,init 上下文在每个 VU 中执行 一次(在测试开始前至少再执行 1 次)。

    这意味着,如果您在 init 上下文中生成随机数,您将为不同 VU 的每次迭代获得相同的“随机”数。这仍然意味着不同的 VU 将具有不同的随机值,如果这对您的用例来说是可以的,那么它们在迭代之间不会改变,并且非常好。

    但我猜你想要的是在每次迭代中不断生成一个新的随机 id 并使用相应的 id 和图像。不过,这意味着您需要在初始化上下文中生成一组图像,因为open 在 vu 代码中不可用。所以你应该有images[getRandomInt(0,6)],而不是vu代码中的open(....getRandomInt...)

    另外,作为记录,每个 VU 都将获得图像的 OWN 副本,因此如果它们很大,或者您没有足够的内存来存储 VU 的数量,这可能是内存问题你想用。

    【讨论】:

    • 我已经阅读了 K6 文档,但我对自己的解释没有信心。谢谢你的解释。我的情况是“vu context”随机化,你的建议正是我所做的。
    猜你喜欢
    • 2014-05-31
    • 2011-08-11
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    相关资源
    最近更新 更多