#负载测试 #性能测试 #HTTP #性能 #基准测试 #测试工具

app goku-bench

Goku 是一个用 Rust 编写的 HTTP 负载测试应用程序

10 个稳定版本

1.1.6 2024 年 6 月 3 日
1.1.4 2024 年 1 月 22 日
1.1.3 2023 年 10 月 30 日
1.1.1 2023 年 5 月 5 日
1.0.2 2023 年 3 月 22 日

#27 in 性能分析

Download history 306/week @ 2024-05-30 43/week @ 2024-06-06 8/week @ 2024-06-13

545 每月下载次数

MIT 许可证

1MB
713

Goku

Rust

Goku 是一个基于 drill 和 vegeta 启发而构建的 HTTP 服务钻探需求的 HTTP 负载测试工具

Goku

安装

自动下载(Linux、OSX、WSL)

您可以使用以下命令直接将 Goku 最新版本下载到当前目录:

curl -sSL https://raw.githubusercontent.com/jcaromiq/goku/1.1.6/scripts/install.sh | sh

使用 Cargo

cargo install goku-bench
goku --version

手动下载

转到 Goku 的 GitHub 发布页面,下载与您的系统匹配的最新 .tar.gz 文件。目前,有以下可用的 tar 文件:

  • Linux (x86_64)
  • macOS (x86_64)
  • Windows (x86_64)

源代码

作为要求,您需要安装 rust

$ cargo build --release

版本控制

CLI 使用 SemVer v2.0.0 进行版本控制。

贡献

CONTRIBUTING.md

使用手册

Usage: goku [OPTIONS] --target <TARGET>

Options:
  -v, --verbose                      Runs in verbose mode
  -t, --target <TARGET>              URL to be requested using an operation [default: GET] Ex. GET https://127.0.0.1:3000/
  -r, --request-body <REQUEST_BODY>  File path for the request body
  -c, --clients <CLIENTS>            Number of concurrent clients [default: 1]
  -i, --iterations <ITERATIONS>      Total number of iterations [default: 1]
  -d, --duration <DURATION>          Duration of the test in second
      --headers <HEADERS>            Headers, multi value in format headerName:HeaderValue
      --scenario <SCENARIO>          Scenario file
  -h, --help                         Prints help
  -V, --version                      Prints version information

--target -t

指定操作和请求的 URL,默认为 GET。
格式:GET https://127.0.0.1:3000

--request-body -r 可选

指定要发送的正文文件的路径。

--clients -c

指定要使用的并发调用数,默认为 1。

--iterations -i

指定要执行的总调用数,默认为 1。

--duration -d

指定测试时长(秒)。

--headers 可选

指定要发送的头部信息。

--scenario 可选

指定yaml格式的场景文件。

target: POST https://127.0.0.1:3000/
clients: 50
requests: 1000
headers:
  - key: "bar"
    value: "foo"
  - key: "Content-Type"
    value: "application/json"

body: "{\"firstName\": \"Terry\",
        \"lastName\": \"Medhurst\",
        \"maidenName\": \"Smitham\",
        \"age\": 50}"


--帮助

打印帮助信息。

--version

打印版本信息。

简单目标
goku --target "GET https://127.0.0.1:3000"
goku --target http://localhost:3000?foo=bar
goku -c 50 -i 1000 --target http://localhost:3000
goku -c 50 --duration 60 --target http://localhost:3000
带有自定义头部的目标
goku --target "GET https://127.0.0.1:3000" --headers Content-Type:application/json --headers bar:foo 
带有自定义正文的目标
goku -c 50 -i 1000 -r body.json --target "POST https://127.0.0.1:3000"

带有自定义正文和头部的目标
goku -r body.json --target "POST https://127.0.0.1:3000" --headers Content-Type:application/json --headers bar:foo 

输出
Concurrency level 50
Time taken 4 seconds
Total requests 1000
Mean request time 169.90099999999998 ms
Max request time 415 ms
Min request time 5 ms
95'th percentile: 319 ms
99.9'th percentile: 367 ms

许可证

查看LICENSE

捐赠

如果您欣赏在这个项目中完成的全部工作,小额捐赠总是受欢迎的。

"Buy Me A Coffee"

依赖

~19–32MB
~619K SLoC