wrk был разработан Уиллом Глозером и впервые выпущен в 2012 году.
wrk — это современный инструмент стресс-тестирования HTTP, который использует современную технологию многопоточности и эффективную обработку сетевого ввода-вывода для генерации большого количества одновременных запросов для проверки производительности HTTP-серверов.
Он разработан как более современный инструмент стресс-тестирования, предназначенный для замены старых инструментов, таких как инструмент сравнительного анализа HTTP-сервера Apache (ab).
wrk может предоставить точные и подробные результаты тестирования производительности, включая пропускную способность, задержку и частоту ошибок, сохраняя при этом высокий уровень параллелизма.
wrk идеально подходит для высоконагрузочного тестирования и анализа производительности.
wrk разработан с учетом простоты использования, эффективности и гибкости. Он предоставляет мощные функции через простой интерфейс командной строки и поддерживает сценарии LuaJIT, позволяя пользователям писать собственные тестовые сценарии для моделирования сложных сценариев запросов.
wrk имеет следующие особенности:
Основной формат команд wrk следующий:
wrk [OPTIONS] URL
Необходимо указать URL-адрес, указав URL-адрес службы HTTP, которую вы хотите протестировать.
wrk предоставляет множество возможностей для настройки различных аспектов стресс-тестирования:
-c, --connections N
Общее количество открытых соединений.
-d, --duration T
Продолжительность испытания, напр. 2s, 2m, 2h。
-t,--threads N
использоватьизнитьчисло。
-s, --script FILE
обозначение Lua Скрипт для настройки просить.
-H, --header H
добавить дополнительный HTTP Перейдите к запросу.
--latency
Распечатайте подробную статистику задержки.
--timeout T
Настройте розетку и HTTP Чтение тайм-аута.
-v, --version
Информация о версии для печати
Числовые параметры могут содержать единицы СИ (1k, 1M, 1G). Параметры времени могут содержать единицы времени (2 с, 2 м, 2 ч).
Что касается количества потоков, это не означает, что чем больше значение, тем лучше эффект стресс-тестирования. Если значение потока слишком велико, это приведет к слишком частому переключению потоков и эффект будет снижен. рекомендуется установить его в 2 раза больше, чем количество ядер ЦП машины для стресс-тестирования. Достаточно 4 раз.
(1) GET-запрос.
100 запросов разбиваются на 10 потоков по 10 секунд.
wrk -c100 -t10 -d10s --latency http://localhost:5000/test_get
Вывод консоли:
Running 10s test @ http://localhost:5000/test_get
10 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 201.71ms 58.06ms 451.62ms 79.16%
Req/Sec 27.94 10.18 70.00 73.70%
Latency Distribution
50% 196.82ms
75% 228.07ms
90% 261.79ms
99% 394.08ms
2817 requests in 10.10s, 473.18KB read
Requests/sec: 278.94
Transfer/sec: 46.86KB
(2) POST-запрос.
Используйте скрипт test_post.lua.
wrk -c100 -t10 -d10s -s test_post.lua --latency http://localhost:5000/test_post
Lua-скрипт:
wrk.method = "POST"
wrk.headers["Content-Type"] = "application/json"
wrk.body = '{"k1":1,"k2":2}'
Вывод консоли:
Running 10s test @ http://localhost:5000/test_post
10 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 188.49ms 60.76ms 352.02ms 67.50%
Req/Sec 38.35 23.71 101.00 67.22%
Latency Distribution
50% 182.22ms
75% 230.92ms
90% 272.66ms
99% 325.02ms
3665 requests in 10.10s, 604.87KB read
Requests/sec: 362.77
Transfer/sec: 59.87KB
Примечание. Запросы GET также могут использовать сценарии Lua.
wg/wrk: Modern HTTP benchmarking tool Сравнение различных инструментов стресс-тестирования производительности_Тестирование производительности (PTS) - Документация по облаку Alibaba Инструмент тестирования производительности Руководство по использованию- собака собака wrk Подробное объяснение инструментов тестирования производительности. - наггетсы