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

Changing number VUs doesn't affect number of actual number of http requests sent in k6 load test

所以,我从 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] Insufficient VUs, reached 900 active VUs and cannot initialize more executor=constant-arrival-rate scenario=default

running (0m30.0s), 000/900 VUs, 128808 complete and 0 interrupted iterations default ✓ [======================================] 000/900 VUs 30s 5000 iters/s

尝试过

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 })
};

得到了

running (0m30.0s), 000/199 VUs, 163220 complete and 0 interrupted iterations default ↓ [======================================] 199 VUs 30s

 ✓ status was 200

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

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

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

我在 运行 脚本中没有任何额外的参数,就像 k6 run script.js

如何在测试服务上从 k6 增加 'pressure'?

选项在:

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