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
What is this?hey is a tiny command-line HTTP load generator that sends a configurable number of requests at a given concurrency level and prints performance stats, acting as a replacement for ApacheBench (ab).
Is this a CLI tool or a library?It's a standalone command-line binary, not a library you import into code.
Do I need Go installed to use it?No, pre-built binaries are provided for all three platforms, so you don't need a Go toolchain unless you want to build from source.
Does it only test HTTP/1 endpoints?No, besides regular HTTP requests it also supports HTTP/2 endpoints, concurrency control, fixed-duration runs, custom headers/body, and per-worker rate limiting.
Why isn't this called 'boom' anymore?The project was originally named boom, which clashed in name with Tarek Ziade's existing tool at tarekziade/boom; it was renamed to hey to avoid the binary-name conflict and preserve the original name for its owner.
Can I load test with a fixed duration instead of a request count?Yes, hey supports running a load test for a set duration (e.g. 30 seconds) instead of specifying a fixed number of requests.
Can I send POST requests or custom headers?Yes, hey lets you make POST requests with a custom body and add custom HTTP headers as part of the load test.
Can I throttle the request rate?Yes, you can rate-limit each worker to a fixed number of queries per second, for example 10 QPS per worker.
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