oha - Японский подход к нагрузочному тестированию
Когда в последний раз вы сталкивались с ситуацией, когда ваш API или веб-приложение неожиданно падало под нагрузкой? Возможно, прямо перед релизом или во время маркетинговой акции? В такие моменты хочется иметь простой, но мощный инструмент для тестирования устойчивости системы. Именно таким инструментом является oha — HTTP-генератор нагрузки с открытым исходным кодом.
Что такое oha?
Oha (おはよう — «доброе утро» по-японски) — это современная альтернатива известному инструменту hey, написанная на Rust. Проект сочетает в себе высокую производительность и удобный текстовый интерфейс (TUI) для мониторинга теста в реальном времени.
Ключевые особенности:
- Поддержка HTTP/1.x, HTTP/2 и экспериментальный HTTP/3
- Гибкое управление нагрузкой (QPS, длительность, количество соединений)
- Визуализация результатов в реальном времени
- Поддержка различных методов аутентификации и прокси
- Возможность генерации динамических URL
Почему стоит обратить внимание на oha?
1. Красивый и информативный интерфейс
В отличие от многих консольных утилит, oha предлагает полноценный TUI с анимацией, где можно наблюдать:
- Количество запросов в секунду
- Процент успешных ответов
- Распределение времени ответа
- Статусы HTTP-ответов

2. Гибкость настройки тестов
oha поддерживает множество параметров для точной настройки тестовой нагрузки:
# Тест с 1000 запросов, 50 одновременных соединений
oha -n 1000 -c 50 http://example.com
# Ограничение 200 запросов в секунду
oha -q 200 -z 30s http://example.com
# Генерация случайных URL по шаблону
oha --rand-regex-url http://example.com/[a-z][0-9]
3. Реалистичное тестирование
Автор проекта предлагает использовать два важных параметра для более реалистичного тестирования:
oha -c 100 -q 50 --latency-correction --disable-keepalive http://example.com
--disable-keepalive— отключает постоянные соединения, имитируя поведение реальных пользователей--latency-correction— решает проблему «координированного пропуска» (Coordinated Omission Problem)
Технические особенности
oha написан на Rust с использованием:
- Tokio для асинхронного ввода-вывода
- Ratatui для построения интерфейса
- Hyper в качестве HTTP-клиента
Проект поддерживает:
- Все основные ОС (Linux, Windows, macOS)
- Различные варианты установки (Homebrew, pacman, cargo)
- Контейнеризацию через Docker
Практическое применение
- Тестирование масштабируемости API — перед запуском нового функционала
- Сравнение производительности разных версий приложения
- Поиск узких мест в конфигурации веб-сервера
- Имитация реальной нагрузки для capacity planning
Как начать использовать?
Установка через Cargo (требуется Rust):
cargo install oha
Или используя пакетный менеджер:
- Arch Linux:
pacman -S oha - macOS:
brew install oha - Windows:
winget install hatoo.oha
oha — это отличный выбор для разработчиков, которым нужен:
- Простой, но мощный инструмент нагрузочного тестирования
- Наглядная визуализация результатов
- Поддержка современных HTTP-версий
- Гибкость в настройке тестовых сценариев
Если вы еще не пробовали oha — самое время добавить его в свой инструментарий. Возможно, именно он поможет вам избежать неприятных сюрпризов при следующем релизе.
Проект активно развивается и открыт для contributions. Особенно приветствуется помощь в улучшении TUI, оптимизации производительности и написании тестов.