Перейти к основному содержимому

Генератор http трафика - oha

· 2 мин. чтения

Генератор HTTP запросов альтернатива rakyll/hey

oha

Введение

Простой кроссплатформенный инструмент командной строки для генерации HTTP-нагрузки

Использовал для проверки автоскейлинга в k8s, когда задал ресурсы в nginx, и нужно было создать нагрузку, этот инструмент отлично подошел. Получилось быстро нагенерировать запросы и посмотреть как ведет себя кластер.

  • поддержка HTTP/1.1, HTTP/2 и экспериментальная HTTP/3
  • красивый интерактивный TUI с анимацией в реальном времени
  • высокая производительность благодаря Rust
  • простота использования CLI
  • гибкие настройки запросов (заголовки, методы, тело и т.д.)
  • поддержка burst-режима и rate limiting
  • вывод результатов в разных форматах (text, JSON, CSV)

Репозиторий Github

Установка

macOS:

brew install oha

Debian/Ubuntu:

echo "deb [signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian/ stable main" | sudo tee /etc/apt/sources.list.d/azlux.list
sudo wget -O /usr/share/keyrings/azlux-archive-keyring.gpg https://azlux.fr/repo.gpg
apt update
apt install oha

Пример использования

oha

Базовый тест на 1 минуту:

oha -z 1m https://akmalov.com

Тест с 10 одновременными соединениями и 1000 запросами:

oha -c 10 -n 1000 https://akmalov.com

POST запрос с JSON данными:

oha -m POST -H "Content-Type: application/json" -d '{"test": "data"}' https://httpbin.org/post

Основные параметры

  • -z — продолжительность теста (например, 10s, 2m, 1h)
  • -n — количество запросов
  • -c — количество одновременных соединений
  • -m — HTTP метод (GET, POST, PUT, DELETE)
  • -H — заголовки HTTP
  • -d — тело запроса
  • --json — вывод результатов в формате JSON

Альтернативы

  • hey — популярный инструмент на Go
  • wrk — легковесный инструмент на C
  • ab (Apache Bench) — классический инструмент
  • siege — продвинутый инструмент нагрузочного тестирования

Преимущество oha: красивая анимация в реальном времени и высокая производительность благодаря Rust.