Привет всем, я рыбак.
Сегодня я рекомендую вам паруHTTPинтерфейс Инструменты для проведения стресс-тестирования:vegeta。
Адрес проекта: https://github.com/tsenart/vegeta
Вы можете установить его с помощью Brew под Macos следующим образом:
brew update && brew install vegeta
pacman -S vegeta
pkg install vegeta
git clone https://github.com/tsenart/vegeta
cd vegeta
make vegeta
mv vegeta ~/bin # Or elsewhere, up to you.
Инструмент vegeta в основном состоит из 4 подкоманд.,Они естьattack、encode、report、plot。
Есть два способа указать адрес стресс-теста: через стандартный стандартный ввод и указание конкретного файла.
echo "GET https://www.baidu.com" | vegeta attack -duration=5s
Как показано выше, выведите адрес интерфейса, который будет подвергнут стресс-тестированию, команде атаки vegeta через конвейер. Здесь следует отметить, что при указании интерфейса стресс-теста необходимо указать метод запроса, причем метод запроса должен быть указан заглавными буквами. Например ПОЛУЧИТЬ, ПОСТ. Get или Post — недопустимые методы.
В файле можно указать один или несколько URL-адресов для стресс-тестирования. Указанный формат следующий:
GET https://foo.bar/a/b/c
Header-X: 123
Header-Y: 321
POST https://foo.bar/b/c/a
Header-X: 123
@/path/to/body/file
В файле разделите две части URL-адреса пустыми строками. Каждая часть URL-адреса начинается с имени метода и URL-адреса, за которыми может следовать соответствующая информация заголовка. В запросе POST вы можете указать конкретный файл содержимого тела через @.
овощной атаки Есть два способа указать имя файла тела. Первый - тот, о котором говорилось выше,В файлах целей,может пройти“@”символы для указания соответствующихbodyтело。Второй — через параметры командной строки-body
Укажите имя файла:
vegeta attack -body
Используйте подкоманду овощного кодирования, чтобы указать место, где сохраняется содержимое, выводимое самим интерфейсом (т. е. значение ответа интерфейса), и формат выходного содержимого (csv, json и т. д.). Здесь есть два основных параметра. :
vegetaПротокол испытаний пройденreport
Создано подкомандой。Входные данные для этой команды:encodeВывод, производимый подкомандой。Как показано в следующем примере:
sh-3.2# echo "GET https://www.baidu.com" | vegeta attack -duration=5s | vegeta report
Requests [total, rate, throughput] 250, 50.21, 49.11
Duration [total, attack, wait] 5.09s, 4.979s, 111.653ms
Latencies [min, mean, 50, 90, 95, 99, max] 18.132ms, 32.41ms, 21.998ms, 55.54ms, 106.41ms, 171.889ms, 276.545ms
Bytes In [total, mean] 56750, 227.00
Bytes Out [total, mean] 0, 0.00
Success [ratio] 100.00%
Status Codes [code:count] 200:250
Как видите, вывод информации в отчет включает в себя:
Статистику можно рассчитать по интервалу времени ответа с помощью параметра -type следующим образом:
sh-3.2# echo "GET https://www.baidu.com" | vegeta attack -duration=5s | vegeta report -type="hist[0,100ms,200ms,300ms]"
Bucket # % Histogram
[0s, 100ms] 247 98.80% ##########################################################################
[100ms, 200ms] 3 1.20%
[200ms, 300ms] 0 0.00%
[300ms, +Inf] 0 0.00%
Подсчитайте результаты ответа в соответствии с различными интервалами времени ответа.
vegeta — это инструмент командной строки. Самая основная функция инструмента стресс-тестирования — это ввод URL-адреса и параметров, запуск определенного количества сопрограмм для выполнения стресс-тестирования, сохранение результатов ответа и вывод статистики в виде отчета. В то же время этот пакет с открытым исходным кодом также является хорошим справочником для всех, кто хочет научиться использовать golang для разработки с использованием командной строки. Заинтересованным друзьям рекомендуется прочитать исходный код.