标签: k6

使用 k6 下载整个网站

我目前正在评估 k6 是否适合我们的负载测试需求。我们有一个相当传统的网站架构,使用 Apache 网络服务器、PHP 和 MySQL 数据库。使用 k6 发送简单的 HTTP 请求看起来很简单,我认为我们将能够用它测试所有主要功能,因为我们不太依赖 JavaScript,而且大多数页面都是静态的。

但是,我不确定如何处理请求中返回的 HTML 中引用的资源(样式表、图像等)。我们还需要加载它们,因为这有时会导致数据库请求,这必须是负载测试的一部分。

k6 中是否有一些开箱即用的功能可以让您像浏览器一样加载所有资源?我知道 k6 不会渲染页面,我也不需要它。我只需要请求 HTML 内的所有资源。

load-testing k6

8
推荐指数
2
解决办法
1万
查看次数

k6 中的睡眠功能是暂停所有虚拟用户的执行还是一次仅暂停一个用户的执行?

我刚开始使用https://k6.io进行负载测试,并且想知道该sleep函数的行为。

现在我已经构建了一个具有多个阶段的负载测试。在我的默认函数中,我有许多被执行的请求(get 和 post)。

我注意到,如果我只是按顺序执行这些命令几分钟,我在 Elastic beanstalk 上运行的应用程序就会开始变慢,并最终抛出 500 个错误。

但是,如果我sleep在每个请求后添加一条语句,如下所示:


const getMe = http.get(`${appEndpoint}/me`, params)
check(getMe, {
  'me: status was 200': r => r.status == 200,
  'me: response time OK (under 500ms)': r => r.timings.duration < maxResponseTimeMs,
  });

sleep(Math.floor(Math.random() * 4) + 1)

// next request would follow below
Run Code Online (Sandbox Code Playgroud)

然后我可以轻松地将虚拟用户数量增加 10 倍,不会出现任何问题。

所以我的问题是这样的:

是否会sleep导致 k6 在该时间内暂停所有虚拟用户的所有请求,或者只是一次暂停来自一个虚拟用户的请求。

据我了解,虚拟用户本质上只是default运行负载测试的函数的并行执行,因此整个函数是否会为所有用户暂停,或者是否针对每个用户执行此操作。

在文档中找不到有关此内容的任何信息,因此我们将不胜感激!

谢谢

javascript load-testing k6

7
推荐指数
1
解决办法
4383
查看次数

是否可以将调试器附加到 k6 脚本?

我希望采用 k6 进行负载测试,但我在为其开发脚本时遇到了麻烦。我的主要用例是检查每个请求,看看我是否收到正确的标头和内容,并希望使用调试器检查响应。

我尝试通过附加节点检查调试器( https://nodejs.org/api/debugger.html )来单独运行脚本,但该文件没有被执行,因为当前的导入和导出模块关键字无法识别节点版本(8.7.0)

我也无法找到有关如何调试这些脚本的任何文档。

javascript load-testing node.js k6

6
推荐指数
1
解决办法
2211
查看次数

在 docker 上使用 k6 测试本地主机站点

我的计算机上有一个应用程序在 localhost:1235 上运行,我正在尝试对其进行负载测试。

我为docker安装了k6容器来测试它,但当然从docker的性质来看,我的容器有不同的localhost。我试图理解要做什么。

我运行以下命令: docker run -it --rm --net=host -v c:/users/k6:/k6 loadimpact/k6 run /k6/script

我在某处读到 --net=host 在 Windows 上不起作用,对吗?如何找到主机IP?

我尝试按照本教程运行: http://blog.michaelhamrah.com/2014/06/accessing-the-docker-host-server-within-a-container/

我找到的IP 172.17.0.1 在我的测试中不起作用。

我也尝试添加-p 1235:1235但失败了,我猜docker尝试绑定这个端口并转发到它。

预先致谢,柴姆

windows localhost docker k6

6
推荐指数
2
解决办法
6418
查看次数

如何在 k6s 中允许不安全的请求?

使用不安全证书运行的应用程序会导致 k6 出错。

time="2017-11-29T14:15:16Z" level=warning msg="Request Failed" error="Put https://xxxxxxx : x509: 由未知机构签名的证书"

k6

6
推荐指数
1
解决办法
1674
查看次数

如何在loadimpact / k6中通过单个命令执行多个k6脚本?

如官方的loadimpact / k6文档所示,我们能够执行一个k6脚本,如下所示:

k6 run ../tests/http_get.js
Run Code Online (Sandbox Code Playgroud)

如何单次执行多个脚本文件?特别是驻留在给定本地目录中的所有脚本。就像是:

k6 run ../tests/
Run Code Online (Sandbox Code Playgroud)

k6是否支持开箱即用?

load-testing performance-testing k6

6
推荐指数
2
解决办法
2237
查看次数

拨打tcp:getsockopt:本地测试拒绝连接

我已经使用k6几天,在几种不同的环境中针对和API进行负载测试,并找出一些错误。

一切进展顺利,直到突然之间它开始在本地失败。

所有请求均导致以下错误:

请求失败错误=“ =” Get http://localhost:8000:拨号tcp [:: 1]:8000:getsockopt:连接被拒绝“

这仅在k6中发生;我仍然可以通过浏览器,邮递员和cURL成功调用本地API。

有什么方法可以从k6中获取更多信息并弄清楚为什么它无法连接了?

k6

5
推荐指数
1
解决办法
3490
查看次数

我可以在 loadimpact/k6 脚本中传递自定义命令行参数吗?

正如官方 loadimpact/k6 文档中所示,我们能够执行 k6 脚本,如下所示:

k6 run github.com/loadimpact/k6/samples/http_get.js
Run Code Online (Sandbox Code Playgroud)

是否可以将自定义命令行参数传递到 k6 测试中?例如,假设我想传入一个 URL,然后从脚本中引用该 URL。

这是开箱即用的支持吗?如果是这样,我怎样才能做到这一点?

load-testing performance-testing k6

5
推荐指数
1
解决办法
7318
查看次数

使用 k6 JSON 输出生成 html 报告

是否有任何可用的插件可以从 K6 生成的 JSON 输出生成 html 报告?我正在尝试构建一个简单的 HTML 报告,但生成的输出 JSON 无效且无法解析。以下是 K6 的 JSON 输出。

{"type":"Metric","data":{"name":"data_received","type":"counter","contains":"data","tainted":null,"thresholds":[],"submetrics":null,"sub":{"name":"","parent":"","suffix":"","tags":null}},"metric":"data_received"}
{"type":"Point","data":{"time":"2020-07-30T21:06:05.6026767Z","value":0,"tags":{"group":"::setup"}},"metric":"data_received"}
{"type":"Metric","data":{"name":"iteration_duration","type":"trend","contains":"time","tainted":null,"thresholds":[],"submetrics":null,"sub":{"name":"","parent":"","suffix":"","tags":null}},"metric":"iteration_duration"}
{"type":"Point","data":{"time":"2020-07-30T21:06:05.6026767Z","value":0.09,"tags":{"group":"::setup"}},"metric":"iteration_duration"}
Run Code Online (Sandbox Code Playgroud)

javascript load-testing k6

5
推荐指数
1
解决办法
9008
查看次数

如何在 K6 中处理 Bearer 令牌

正如标题所暗示的,到目前为止,我面临着一些关于使用 K6 的不记名令牌授权的“疑问”,因为我从 getAuth 方法/服务接收该令牌作为access_token ,现在我有以下内容:

getAuthtoken.js

import http from 'k6/http';
import { check, sleep } from "k6";
import * as general_data from '../utility/general.js';
import * as auth_data from '../utility/authentication.js';

export default function () {
  var url = `${general_data.baseUrl}${auth_data.url}`;
  var payload = JSON.stringify(auth_data.body);

  const headers = {
    headers: auth_data.headers,
};
  const res = http.post(url, payload, headers);
  check(res, {
      'status was 200': r => r.status == 200,
  })
  console.log(res.body)
  return res.json()
}

Run Code Online (Sandbox Code Playgroud)

Json 响应如下所示:

{
    "access_token": "vHS9awrfrzTWxMGpAsVNWD2aSsKXkoGBZg8RgCSoQDo",
    "token_type": "Bearer", …
Run Code Online (Sandbox Code Playgroud)

javascript performance postman bearer-token k6

5
推荐指数
0
解决办法
5522
查看次数