更改VU数量不会影响k6负载测试中实际发送的http请求数量

问题描述 投票:0回答:2

所以,我从1个VU开始,到199个结束,之后VU的值检查数量不再增长。

所以,我尝试了这个

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

export const options = {
  scenarios: { default: {
  executor: 'constant-arrival-rate',
  duration: '30s',
  rate: 5000, timeUnit: '1s',
  preAllocatedVUs: 900
  } }
};

export default function() {
  const res = http.get("http://ipv4:6399/game_heartbeat");
  check(res, { "status was 200": r => r.status == 200 })
};

得到了

WARN[0002] VU 不足,已达到 900 个活动 VU,无法 初始化更多执行器=恒定到达率场景=默认

运行中(0m30.0s),000/900 VU,128808 完成,0 中断 迭代默认 ✓ [========================================] 000/900 VU 30 秒 5000 迭代/秒

尝试过

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

export const options = {
  vus: 199,
  duration: "30s"
};

export default function() {
  const res = http.get("http://ipv4:6399/game_heartbeat");
  check(res, { "status was 200": r => r.status == 200 })
};

并且得到了

运行(0m30.0s),000/199 VU,163220 完成,0 中断 迭代默认 ↓ [========================================] 199 个 VU 30秒

 ✓ status was 200

 checks.........................: 100.00% ✓ 163220      ✗ 0

如果我将 VU 从 199 更改为 299、399、699 - 它不会改变检查数量。运行 30 秒仍会在 165k 左右

我的版本是 k6 v0.36.0 (2022-01-24T09:50:03+0000/ff3f8df, go1.17.6, linux/amd64)

我正在运行脚本,没有任何额外的参数,就像

k6 run script.js

一样

如何增加 k6 对测试服务的“压力”?

testing load-testing k6
2个回答
1
投票

选项位于:

  1. 测试服务无法处理您发送的更多请求,即您达到了瓶颈,在这种情况下您应该开始寻找原因以及提高服务性能的方法
  2. k6 无法发送更多请求,因为它缺乏 CPU、RAM、网络 IO 等资源。在这种情况下,您可以考虑将负载生成器移动到更强大的机器,或者考虑切换到像 JMeter 这样的负载测试工具Locust 支持分布式执行模式。

0
投票

确定是 k6 还是您的应用程序耗尽了 Gas 将很有用。弄清楚这一点,你就可以继续前进。

如果您的应用程序是瓶颈......恭喜!您的测试表明了您的限制,您可以开始优化您的应用程序。或者投入更多资源,直到达到您想要的性能。

如果是 k6 无法跟上您的应用程序可以接收的流量,那么向您的应用程序致敬!请参阅如何为 k6 提供更多资源来使用。

顺便说一句,如果你在同一台机器上运行 k6 和你的应用程序,那么它们将会争夺资源。如果是这种情况并且您遇到瓶颈,请将其中一台移动到另一台计算机。

© www.soinside.com 2019 - 2024. All rights reserved.