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, управление параллельностью, запуски на заданное время, пользовательские заголовки и тело запроса, а также ограничение частоты запросов для каждого воркера.
Почему проект больше не называется «boom»?Изначально проект назывался boom, но это имя совпадало с названием существующей утилиты Tarek Ziade (tarekziade/boom). Чтобы избежать конфликта имён исполняемых файлов и оставить исходное название за её владельцем, проект переименовали в hey.
Можно ли запускать нагрузочный тест на заданное время, а не на определённое количество запросов?Да, hey может запускать нагрузочный тест на заданный промежуток времени (например, 30 секунд) вместо указания фиксированного количества запросов.
Можно ли отправлять POST-запросы или пользовательские заголовки?Да, hey позволяет отправлять POST-запросы с произвольным телом и добавлять пользовательские HTTP-заголовки в ходе нагрузочного теста.
Можно ли ограничить частоту запросов?Да, можно ограничить каждый воркер фиксированным количеством запросов в секунду, например 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