hey README

The project's README from github.com/rakyll/hey. As one markdown file: README.md.

hey

hey is a tiny program that sends some load to a web application.

hey was originally called boom and was influenced from Tarek Ziade's tool at tarekziade/boom. Using the same name was a mistake as it resulted in cases where binary name conflicts created confusion. To preserve the name for its original owner, we renamed this project to hey.

Installation

Package Managers

macOS:

Usage

hey runs provided number of requests in the provided concurrency level and prints stats.

It also supports HTTP2 endpoints.

Usage: hey [options...] <url>

Options:
  -n  Number of requests to run. Default is 200.
  -c  Number of workers to run concurrently. Total number of requests cannot
      be smaller than the concurrency level. Default is 50.
  -q  Rate limit, in queries per second (QPS) per worker. Default is no rate limit.
  -z  Duration of application to send requests. When duration is reached,
      application stops and exits. If duration is specified, n is ignored.
      Examples: -z 10s -z 3m.
  -o  Output type. If none provided, a summary is printed.
      "csv" is the only supported alternative. Dumps the response
      metrics in comma-separated values format.

  -m  HTTP method, one of GET, POST, PUT, DELETE, HEAD, OPTIONS.
  -H  Custom HTTP header. You can specify as many as needed by repeating the flag.
      For example, -H "Accept: text/html" -H "Content-Type: application/xml" .
  -t  Timeout for each request in seconds. Default is 20, use 0 for infinite.
  -A  HTTP Accept header.
  -d  HTTP request body.
  -D  HTTP request body from file. For example, /home/user/file.txt or ./file.txt.
  -T  Content-type, defaults to "text/html".
  -a  Basic authentication, username:password.
  -x  HTTP Proxy address as host:port.
  -h2 Enable HTTP/2.

  -host	HTTP Host header.

  -disable-compression  Disable compression.
  -disable-keepalive    Disable keep-alive, prevents re-use of TCP
                        connections between different HTTP requests.
  -disable-redirects    Disable following of HTTP redirects
  -cpus                 Number of used cpu cores.
                        (default for current machine is 8 cores)

Examples

Make requests with default settings:

hey https://google.com

Make 1000 requests with 100 concurrent workers:

hey -n 1000 -c 100 https://google.com

Run load test for 30 seconds:

hey -z 30s https://google.com

Make POST request with custom body:

hey \
    -m POST \
    -d "param1=value1&param2=value2" \
    https://google.com

Add custom headers:

hey \
    -H "Accept: application/json" \
    -H "Authorization: Bearer token" \
    https://google.com

Test with HTTP/2:

hey -h2 https://google.com

Rate limit to 10 queries per second per worker:

hey -q 10 -c 5 -z 30s https://google.com

hey (rakyll/hey)

Searching Database…

20.7K ·GitHub
这是什么?hey 是一个小巧的命令行 HTTP 压力测试工具,可以按指定的并发数发送设定数量的请求,并输出性能统计数据,是 ApacheBench(ab)的替代品。
这是命令行工具还是库?它是一个独立的命令行可执行文件,不是可以在代码中导入使用的库。
使用它需要先安装 Go 吗?不需要。官方提供了三个平台的预编译二进制文件,除非你想从源代码自行编译,否则无需安装 Go 工具链。
它只能测试 HTTP/1 接口吗?不是。除了普通的 HTTP 请求,它还支持 HTTP/2 接口、并发控制、固定时长运行、自定义请求头和请求体,以及每个 worker 的速率限制。
为什么这个工具不再叫 'boom' 了?该项目最初名为 boom,但与 Tarek Ziade 已有的工具 tarekziade/boom 重名。为避免可执行文件名冲突,并把原名留给其原作者,项目改名为 hey。
我可以按固定时长而不是请求数量进行压测吗?可以,hey 支持在设定的时长内(例如 30 秒)进行压力测试,而不必指定固定的请求数量。
我可以发送 POST 请求或自定义请求头吗?可以,hey 支持发送带自定义请求体的 POST 请求,也可以在压测中添加自定义 HTTP 请求头。
我可以限制请求速率吗?可以,你可以为每个 worker 设置固定的每秒查询数(QPS)限制,例如每个 worker 每秒 10 次查询(10 QPS)。
What are similar projects?goreplay, vegeta, oha, wrk, locust, k6, bazel, comcast
Creator
rakyll
Size
1.1 MB
Stars
20.7K
Age
10y
Commits · 90 Days