Перед официальным запуском проекта нам обычно необходимо использовать стресс-тестирование, чтобы оценить объем запросов, которые может поддерживать текущая система, и устранить возможные скрытые ошибки. Стресс-тестирование (стресс-тестирование) является важным шагом для обеспечения работоспособности системы; стабильно в условиях высокой нагрузки. Моделируя сценарии с высоким уровнем параллелизма, вы можете оценить узкие места производительности, надежность и стабильность системы, а затем оптимизировать системную архитектуру и распределение ресурсов.
RT
):Относится к времени, которое требуется системе для ответа на запрос.。
Throughput
):Относится к количеству запросов, обрабатываемых системой в единицу времени.。
QPS
(Скорость запросов в секунду,Query Per Во-вторых): «Частота запросов в секунду» — это количество запросов, на которые сервер может ответить в секунду. Это показатель того, какой объем трафика обрабатывает конкретный сервер запросов в течение определенного времени.
TPS
(Transaction Per Второе): количество транзакций или транзакций, которые система может обработать в секунду.
brew install wrk
Используйте Git для загрузки исходного кода
# 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и сгенерировать исполняемый файл:
# 4. Войдите в папку «Установить»
cd wrk
# 5. скачать gcc компилятор, и скомпилировать
yum -y install gcc
make
После успешной компиляции,Вы получите файл с именемwrk
исполняемый файл。Чтобы иметь возможность запускаться в любом каталогеwrk
,Вы можете переместить его в системуPATH
Каталог в переменной среды,Или напрямую измените каталог wrk. вприезжатьPATH
в переменных среды。Если вы не уверены, что делать,Вы можете ознакомиться с соответствующей документацией по операционной системе.
В системе Linux вы можете использовать следующую команду, чтобы добавить вприезжатьPATH
переменные среды(Предположим, ваш текущий пользовательuser
):
# 6. Создайте мягкую ссылку, Удобно для международных звонков
ln -s /usr/local/src/wrk/wrk /usr/local/bin
в использовании wrk
Раньше можно было пройти wrk --help
команда, чтобы просмотреть все доступные параметры командной строки. Эта команда выведет wrk
Инструкция по использованию и все поддерживаемые параметры.
-c, --connections
: Количество соединений, установленных за нит (количество параллелизма). Значение по умолчанию: 200。-d, --duration
: продолжительность теста, например 2s
、2m
、2h
。Значение по умолчанию: 10 Второй.-t, --threads
: Число нитей, использованных для выполнения теста. Значение по умолчанию: 2。-s, --script
: указать Lua Скрипт для обработки пользовательских запросов или ответов.-H, --header
: добавить в HTTP Заголовок запроса. Вы можете использовать этот параметр несколько раз, чтобы добавить в Несколько голов.--latency
: Печать подробной статистики задержки.--timeout
: Установите тайм-аут запроса, который по умолчанию равен бесконечности.--body
: Укажите тело запроса, которое может быть путем к файлу или прямыми данными.--rate
: Ограничить скорость запросов (запросов в секунду), по умолчанию ограничение скорости отсутствует.Выполните следующую команду:
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
Скрипт для настройки содержимого запроса, возможно, имитирующий поведение при регистрации пользователя.Вывод следующий:
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 миллиметр Второй.