Введение и использование wrk, инструмента стресс-тестирования производительности Go.
Введение и использование wrk, инструмента стресс-тестирования производительности Go.

Перед официальным запуском проекта нам обычно необходимо использовать стресс-тестирование, чтобы оценить объем запросов, которые может поддерживать текущая система, и устранить возможные скрытые ошибки. Стресс-тестирование (стресс-тестирование) является важным шагом для обеспечения работоспособности системы; стабильно в условиях высокой нагрузки. Моделируя сценарии с высоким уровнем параллелизма, вы можете оценить узкие места производительности, надежность и стабильность системы, а затем оптимизировать системную архитектуру и распределение ресурсов.

1. Терминология, связанная со стресс-тестированием

  • время ответа (RT):Относится к времени, которое требуется системе для ответа на запрос.。
  • Пропускная способность (Throughput):Относится к количеству запросов, обрабатываемых системой в единицу времени.。
  • QPS(Скорость запросов в секунду,Query Per Во-вторых): «Частота запросов в секунду» — это количество запросов, на которые сервер может ответить в секунду. Это показатель того, какой объем трафика обрабатывает конкретный сервер запросов в течение определенного времени.
  • TPS(Transaction Per Второе): количество транзакций или транзакций, которые система может обработать в секунду.
  • Количество одновременных подключений: общее количество запросов, принятых сервером в определенное время.

2. Установите работу

2.1 Установка с помощью Homebrew

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

2.2 Компилируем и устанавливаем

Используйте Git для загрузки исходного кода

Язык кода:javascript
копировать
# 1. Перейдите в каталог, в котором нужно просмотреть установку.
cd /usr/local/src

# 2. Без подсказки (-y), Установить git
yum install git -y

# 3. скачать wrk Исходный код
git clone https://github.com/wg/wrk.git

После завершения клонирования,Входитьwrkкаталог и выполнитьmakeкоманда для компиляции。этот Команда скомпилируетсяwrkи сгенерировать исполняемый файл:

Язык кода:javascript
копировать
# 4. Войдите в папку «Установить»
cd wrk

# 5. скачать gcc компилятор, и скомпилировать
yum -y install gcc
make

После успешной компиляции,Вы получите файл с именемwrkисполняемый файл。Чтобы иметь возможность запускаться в любом каталогеwrk,Вы можете переместить его в системуPATHКаталог в переменной среды,Или напрямую измените каталог wrk. вприезжатьPATHв переменных среды。Если вы не уверены, что делать,Вы можете ознакомиться с соответствующей документацией по операционной системе.

В системе Linux вы можете использовать следующую команду, чтобы добавить вприезжатьPATHпеременные среды(Предположим, ваш текущий пользовательuser):

Язык кода:javascript
копировать
# 6. Создайте мягкую ссылку, Удобно для международных звонков
ln -s /usr/local/src/wrk/wrk /usr/local/bin

2.3 Проверьте успешность установки

в использовании wrk Раньше можно было пройти wrk --help команда, чтобы просмотреть все доступные параметры командной строки. Эта команда выведет wrk Инструкция по использованию и все поддерживаемые параметры.

3. Базовое использование команды wrk

3.1 Общие параметры команды

  • -c, --connections: Количество соединений, установленных за нит (количество параллелизма). Значение по умолчанию: 200。
  • -d, --duration: продолжительность теста, например 2s2m2h。Значение по умолчанию: 10 Второй.
  • -t, --threads: Число нитей, использованных для выполнения теста. Значение по умолчанию: 2。
  • -s, --script: указать Lua Скрипт для обработки пользовательских запросов или ответов.
  • -H, --header: добавить в HTTP Заголовок запроса. Вы можете использовать этот параметр несколько раз, чтобы добавить в Несколько голов.
  • --latency: Печать подробной статистики задержки.
  • --timeout: Установите тайм-аут запроса, который по умолчанию равен бесконечности.
  • --body: Укажите тело запроса, которое может быть путем к файлу или прямыми данными.
  • --rate: Ограничить скорость запросов (запросов в секунду), по умолчанию ограничение скорости отсутствует.

3.2 Выполнение тестов

Выполните следующую команду:

Язык кода:javascript
копировать
wrk -t1 -d1s -c2 -s ./scripts/wrk/signup.lua http://localhost:8080/users/signup

Эта команда используется wrk этот HTTP Инструмент стресс-тестирования для тестирования интерфейса регистрации пользователей на локальном хосте. Вот объяснение каждой части команды:

  • wrk: Имя команды, указывающее на выполнение wrk инструмент。
  • -t1: -t За опцией следует 1 Указывает на использование 1 А нит проводить тест.
  • -d1s: -d За опцией следует 1s Продолжительность теста 1 Второй.
  • -c2: -c За опцией следует 2 означает, что каждая нить остается 2 Соединение открыто.
  • -s ./scripts/wrk/signup.lua: -s За опцией следуетпуть ./scripts/wrk/signup.lua означает загрузку Lua Скрипт,эти сценарии используются для настройки запросов или обработки ответов. В этом примере,Сценарий может использоваться для имитации запроса на регистрацию пользователя.
  • http://localhost:8080/users/signup: Это цель теста URL-адрес, который является интерфейсом регистрации пользователя на локальном хосте, прослушивает 8080 порт. В совокупности эта команда будет использовать 1 нить здесь 1 Прямо в течение нескольких секунд http://localhost:8080/users/signup Интерфейс инициирует проверку давления, каждая нить остается 2 связи и использование ./scripts/wrk/signup.lua Скрипт для настройки содержимого запроса, возможно, имитирующий поведение при регистрации пользователя.

3.3 Результаты вывода

Вывод следующий:

Язык кода:javascript
копировать
Running 1s test @ http://localhost:8080/users/signup
  1 threads and 2 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    64.63ms  711.72us  67.28ms   90.00%
    Req/Sec    29.80     10.76    40.00     80.00%
  30 requests in 1.01s, 3.78KB read
Requests/sec:     29.81
Transfer/sec:      3.76KB

этот вывод wrk Статистические результаты после выполнения стресс-теста. Вот объяснение каждой части:

  • Running 1s test @ http://localhost:8080/users/signup: В этой строке отображается конфигурация теста, включая продолжительность теста (1 секунда) и цель теста. URL (интерфейс регистрации пользователя для локального хоста).
  • 1 threads and 2 connections: В этой строке показано количество нить, использованное тестом (1 нить), и количество соединений, установленных на одну нить (2 соединения).
  • Thread Stats: В этом разделе отображается статистическая информация на уровне нити, включая среднюю задержку, стандартное отклонение задержки, максимальную задержку и процент распределения задержки в пределах плюс или минус одно стандартное отклонение от среднего значения.
    • Avg: Средняя задержка,вот 64.63 миллиметр Второй.
    • Stdev: Стандартное отклонение задержки,вот 711.72 микро Второй.
    • Max: Максимальная задержка,вот 67.28 миллиметр Второй.
    • +/- Stdev: Процент распределения задержки в пределах плюс-минус одно стандартное отклонение от среднего значения, здесь 90.00%。
  • Req/Sec: В этом разделе отображается статистическая информация о количестве запросов в секунду, включая среднее количество запросов, стандартное отклонение количества запросов, максимальное количество запросов и процент запросов, распределенных в пределах плюс или минус одно стандартное отклонение иметь в виду.
    • Avg: Среднее количество запросов в секунду, вот 29.80。
    • Stdev: Стандартное отклонение количества запросов в секунду, вот 10.76。
    • Max: Максимальное количество запросов в секунду, вот 40.00。
    • +/- Stdev: Процент запросов в секунду, распределенный в пределах плюс-минус одно стандартное отклонение от среднего значения, вот 80.00%。
  • 30 requests in 1.01s, 3.78KB read: В этой строке показано общее количество задач, выполненных во время теста. 30 запросы, отнимающие время 1.01 секунды, читай 3.78KB данные.
  • Requests/sec: Здесь показано среднее количество запросов, выполненных в секунду, вот оно 29.81。
  • Transfer/sec: Здесь показано среднее количество данных, считываемых в секунду, вот оно 3.76KB。 Подводя итог, этот тест 1 Используйте в течение нескольких секунд 1 нить и 2 соединения оказывают нагрузку на интерфейс регистрации пользователя локального хоста и в среднем могут завершиться примерно 29.81 запросов со средней задержкой около 64.63 миллиметр Второй.
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