Овощ с открытым исходным кодом: библиотека инструментов http-стресс-тестирования
Овощ с открытым исходным кодом: библиотека инструментов http-стресс-тестирования

Привет всем, я рыбак.

Сегодня я рекомендую вам паруHTTPинтерфейс Инструменты для проведения стресс-тестирования:vegeta

Адрес проекта: https://github.com/tsenart/vegeta

1. Характеристики

  • Можно использовать как командную строку, так и сторонние библиотеки Go.
  • Командная строка использует дизайн в стиле UNIX.
  • Возможность расширения до нескольких форматов отчетов о стресс-тестах
  • Он также очень прост и удобен в использовании для распределенного тестирования.
  • Простота установки и использования

2. Установка

2.1 Установка под MacOS

Вы можете установить его с помощью Brew под Macos следующим образом:

Язык кода:javascript
копировать
brew update && brew install vegeta

2.2 Установка под Arch Linux

Язык кода:javascript
копировать
pacman -S vegeta

2.3 Установка под FreeBSD

Язык кода:javascript
копировать
pkg install vegeta

2.4 Соберите самостоятельно

Язык кода:javascript
копировать
git clone https://github.com/tsenart/vegeta
cd vegeta
make vegeta
mv vegeta ~/bin # Or elsewhere, up to you.

3. Руководство по использованию

Инструмент vegeta в основном состоит из 4 подкоманд.,Они естьattackencodereportplot

  • инструкция нападения на ребенка:Эта подкоманда в основном используется для настройки и стресс-тестирования.интерфейсзапрос связан。Например, требуется испытание давлением.интерфейсадрес、параметры тела интерфейса、заголовок интерфейса、Количество одновременных запросов、Время стресс-теста、Скорость стресс-тестирования и т.д.
  • закодировать подкоманду:Эта подкоманда в основном используется для указания местоположения и формата вывода результатов измерения давления.。Например, сcsvВывод формата все еще вjsonформат вывода,В какой файл выводить.
  • подкоманда отчета:Эта подкоманда в основном используется для формирования статистических отчетов на основе результатов стресс-тестов.。
  • Подкоманда построения графика: Функция этой подкоманды в основном заключается в отображении результатов тестирования в виде диаграмм.

3.1 Укажите адрес интерфейса для стресс-тестирования

Есть два способа указать адрес стресс-теста: через стандартный стандартный ввод и указание конкретного файла.

  • Укажите адрес стресс-теста через стандартный ввод
Язык кода:javascript
копировать
echo "GET https://www.baidu.com" | vegeta attack -duration=5s

Как показано выше, выведите адрес интерфейса, который будет подвергнут стресс-тестированию, команде атаки vegeta через конвейер. Здесь следует отметить, что при указании интерфейса стресс-теста необходимо указать метод запроса, причем метод запроса должен быть указан заглавными буквами. Например ПОЛУЧИТЬ, ПОСТ. Get или Post — недопустимые методы.

  • Укажите файлы через параметр target

В файле можно указать один или несколько URL-адресов для стресс-тестирования. Указанный формат следующий:

Язык кода:javascript
копировать
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 вы можете указать конкретный файл содержимого тела через @.

3.2 Указанное содержимое тела

овощной атаки Есть два способа указать имя файла тела. Первый - тот, о котором говорилось выше,В файлах целей,может пройти“@”символы для указания соответствующихbodyтело。Второй — через параметры командной строки-bodyУкажите имя файла:

Язык кода:javascript
копировать
vegeta attack -body 

3.3 Пока указанный интерфейс не вернет контент

Используйте подкоманду овощного кодирования, чтобы указать место, где сохраняется содержимое, выводимое самим интерфейсом (т. е. значение ответа интерфейса), и формат выходного содержимого (csv, json и т. д.). Здесь есть два основных параметра. :

  • -выходная строка: указывает место, где хранится ответ.
  • -to string: укажите формат вывода контента. Например, csv, json, gob. По умолчанию — json.

3.4 Создание отчета об испытаниях

vegetaПротокол испытаний пройденreportСоздано подкомандой。Входные данные для этой команды:encodeВывод, производимый подкомандой。Как показано в следующем примере:

Язык кода:javascript
копировать
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 

Как видите, вывод информации в отчет включает в себя:

  • Статистика запросов: общее количество запросов, скорость и пропускная способность.
  • Продолжительность: общая продолжительность стресс-теста, фактическая длительность отправки запроса и время ожидания.
  • Задержка ответа: минимальная, максимальная задержка. Задержки ответа на 50-м, 90-м и 95-м процентиле.
  • Входные и выходные байты
  • Уровень успеха ответа.
  • Статистика кодов состояния.

Статистику можно рассчитать по интервалу времени ответа с помощью параметра -type следующим образом:

Язык кода:javascript
копировать
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% 

Подсчитайте результаты ответа в соответствии с различными интервалами времени ответа.

4. Резюме

vegeta — это инструмент командной строки. Самая основная функция инструмента стресс-тестирования — это ввод URL-адреса и параметров, запуск определенного количества сопрограмм для выполнения стресс-тестирования, сохранение результатов ответа и вывод статистики в виде отчета. В то же время этот пакет с открытым исходным кодом также является хорошим справочником для всех, кто хочет научиться использовать golang для разработки с использованием командной строки. Заинтересованным друзьям рекомендуется прочитать исходный код.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose