Что это такое
wrk — утилита для нагрузочного тестирования HTTP. Она рассчитана на то, чтобы с одной многоядерной машины создавать значительную нагрузку на тестируемый сервис.
Проект сочетает многопоточную модель и масштабируемые механизмы уведомлений вроде epoll и kqueue. Благодаря этому wrk не пытается быть большой платформой мониторинга, а делает одну задачу быстро и предсказуемо.
Его часто используют перед релизом сервиса, при сравнении настроек веб-сервера, после оптимизации кода или при проверке, выдерживает ли локальный стенд заданное число соединений.
Что внутри
Основная команда задает количество потоков, число соединений, длительность теста и адрес. На выходе пользователь получает задержки, число запросов и пропускную способность.
Отдельная возможность — LuaJIT-скрипты. Они позволяют генерировать разные HTTP-запросы, обрабатывать ответы и добавлять собственные отчеты, когда простого GET-запроса недостаточно.
wrk не хранит долгую историю и не строит красивые панели. Его сила в коротком эксперименте: запустить нагрузку, увидеть цифры, изменить параметр и повторить.
Как используют
Типичный сценарий — локальная проверка API или страницы перед более тяжелыми испытаниями. Инженер запускает wrk с понятной длительностью, сравнивает несколько вариантов и смотрит не только среднее время, но и хвост задержек.
Инструмент хорошо подходит для сравнения конфигураций: число процессов сервера, размер пула соединений, кеширование, сжатие, работа прокси или изменение обработчика.
Ограничение в том, что wrk легко запустить неправильно. Если машина-клиент слабее сервера, сеть узкая или сценарий не похож на реальный трафик, цифры будут красивыми, но бесполезными.
Пример теста
Команда запускает 30-секундный тест с 12 потоками и 400 открытыми соединениями — классический базовый пример для быстрой оценки.
Базовый HTTP-тест
Пример фиксирует поток, соединения и длительность, чтобы результат можно было повторить после изменения сервера.
wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html
Сильные стороны и ограничения
Сильная сторона wrk — малый вес и честная фокусировка на HTTP-нагрузке. Он быстро дает ориентир и хорошо подходит для повторяемых сравнений.
Для полноценной проверки продукта одного wrk мало. Нужны реальные сценарии пользователей, данные, авторизация, прогрев кешей, наблюдение за сервером и проверка ошибок.
wrk подойдет разработчикам серверов, администраторам и тем, кто оптимизирует HTTP-слой. Если нужно моделировать долгую пользовательскую сессию с браузером, стоит брать инструмент другого класса.