Инструмент стресс-тестирования производительности веб-сайта: подробное объяснение использования Apache ab.
Инструмент стресс-тестирования производительности веб-сайта: подробное объяснение использования Apache ab.

abдаApacheВходит в комплектстресс-тестинструмент。abОчень практично,Это может не толькоApacheсерверСовершить посещение веб-сайтастресс-тест,Другие видысерверруководитьстресс-тест。напримерNginxTomcat、IIS и т. д.

Далее мы начинаем знакомить с использованием команды ab: 1. Принцип АБ 2. Установка АБ 3. описание параметра ab 4. показатели эффективности пресса 5. Фактическое использование ab

1. Принцип АБ ab — это аббревиатура команды apachebench.

Принцип ab: команда ab создаст несколько потоков одновременного доступа.,Имитируйте одновременный доступ нескольких посетителей к определенному URL-адресу. Его тестовая цель основана на URL-адресе.,поэтому,Его можно использовать для проверки давления нагрузки Apache.,Также можно протестироватьnginx、lighthttp、tomcat、IISПодожди другихWebсервердавление。

Команда ab предъявляет очень низкие требования к компьютеру, выдающему нагрузку. Она не занимает много процессора и памяти. Но это вызовет огромную нагрузку на целевой сервер, а принцип действия аналогичен CC-атакам. Также нужно быть осторожным при самостоятельном тестировании и использовании, иначе сразу будет приложена слишком большая нагрузка. Это может привести к нехватке ресурсов целевого сервера или даже к сбою в серьезных случаях.

2. Установка АБ

$ yum установить httpd-tools После завершения выполнения команды вы можете напрямую запустить ab.

3. Описание параметра АБ

Ниже мы приводим соответствующие описания этих параметров. следующее: -n: количество запросов, выполненных в тестовом сеансе. По умолчанию выполняется только один запрос.

-c: количество запросов, генерируемых одновременно. По умолчанию — по одному.

-t: максимальное количество секунд для выполнения теста. Его внутреннее неявное значение — -n 50000, что ограничивает проверку сервера фиксированным общим временем. По умолчанию ограничений по времени нет.

-p: файл, содержащий данные, которые необходимо отправить POST.

-P: обеспечить доверие аутентификации BASIC транзитному агенту. Имя пользователя и пароль разделяются знаком: и отправляются в кодировке base64. Эта строка отправляется независимо от того, требует ли ее сервер (т. е. отправляется ли код требования аутентификации 401).

-T: информация заголовка типа контента, используемая данными POST.

-v: установить степень детализации отображаемой информации — значение 4 или выше будет отображать информацию заголовка, значение 3 или выше может отображать коды ответа (404, 200 и т. д.), а значение 2 или выше может отображать предупреждения и другая информация.

-V: Отобразить номер версии и выйти.

-w: вывести результаты в формате таблицы HTML. По умолчанию это таблица ширины в два столбца с белым фоном.

-i: выполнить запрос HEAD вместо GET.

-x:настраивать<table>строка атрибута。

-X: использовать прокси-сервер для запросов.

-y:настраивать<tr>строка атрибута。

-z:настраивать<td>строка атрибута。

-C: прикрепите файл cookie к строке запроса. Его типичная форма — пара параметров имя=значение, и этот параметр можно повторять.

-H: добавить к запросу дополнительную информацию заголовка. Типичная форма этого параметра — допустимая строка заголовка, содержащая пары полей и значений, разделенных двоеточиями (например, «Accept-Encoding:zip/zop;8bit»).

-A: обеспечивает доверие аутентификации BASIC серверу. Имя пользователя и пароль разделяются знаком: и отправляются в кодировке base64. Эта строка отправляется независимо от того, требует ли ее сервер (т. е. был ли отправлен код требования аутентификации 401).

-h: показать использование.

-d: не отображать сообщение «процент обслуживания в таблице XX [мс]» (обеспечивает поддержку предыдущих версий).

-e: создать файл с разделителями-запятыми (CSV), содержащий соответствующий процент времени (в микросекундах), необходимый для обработки каждого соответствующего процента запросов (от 1% до 100%). Поскольку этот формат «бинаризирован», он более полезен, чем формат «gnuplot».

-g: записать все результаты тестов в файл gnuplot или TSV (с разделителями табуляцией). Этот файл можно легко импортировать в Gnuplot, IDL, Mathematica, Igor и даже Excel. Первая строка — это заголовок.

-i: выполнить запрос HEAD вместо GET.

-k: включить функцию HTTP KeepAlive, которая выполняет несколько запросов за один сеанс HTTP. По умолчанию функция KeepAlive не включена.

-q: если количество обработанных запросов превышает 150, счетчик хода выполнения будет выводиться в stderr каждый раз, когда ab обрабатывает примерно 10 % или 100 запросов. Флаг -q подавляет эти сообщения.

4. показатели эффективности пресса Есть несколько показателей, которые важны при тестировании производительности:

1. Пропускная способность (запросов в секунду) Количественное описание возможностей параллельной обработки сервера. Единица измерения — reqs/s, что означает количество запросов, обрабатываемых в единицу времени для определенного количества одновременных пользователей. Максимальное количество запросов, которое может быть обработано в единицу времени при определенном количестве одновременных пользователей, называется максимальной пропускной способностью.

Помните: пропускная способность зависит от количества одновременно работающих пользователей. Это предложение имеет два значения: а. Пропускная способность зависит от количества одновременно работающих пользователей. б. При разном количестве одновременных пользователей пропускная способность обычно различается.

Формула расчета: общее количество запросов/время, затраченное на обработку этих запросов, т.е. Запрос в секунду = количество полных запросов/время, затраченное на тесты.

Следует отметить, что это значение отражает общую производительность текущей машины, и чем больше значение, тем лучше.

2. Количество одновременных подключений Под количеством одновременных подключений понимается количество запросов, принятых сервером в определенное время. Проще говоря, это сеанс.

3. Количество одновременных пользователей (уровень параллелизма) Обратите внимание на разницу между этим понятием и количеством одновременных подключений. Пользователь может иметь несколько сеансов одновременно, то есть количество подключений. В HTTP/1.1 IE7 поддерживает два одновременных соединения, IE8 поддерживает 6 одновременных подключений, а FireFox3 поддерживает 4 одновременных соединения, поэтому, соответственно, наше количество одновременных пользователей должно быть разделено на это базовое число.

4. Среднее время ожидания запроса пользователя (время на запрос)

Формула расчета: время выполнения всех запросов/(общее количество запросов/количество одновременно работающих пользователей), то есть: Время на запрос = время, затраченное на тесты/(полные запросы/уровень параллелизма)

5. Среднее время ожидания запроса сервера (время на запрос: для всех одновременных запросов)

Формула расчета: Время, необходимое для обработки всех запросов/общее количество запросов, то есть: Время, затраченное на/тесты Выполненные запросы Как видите, это обратная пропускная способность.

В то же время оно также равно среднему времени ожидания пользовательского запроса/количеству одновременных пользователей, т.е. Время на запрос/уровень параллелизма

5. Фактическое использование ab 1. Команда ab имеет множество параметров. Мы часто используем параметры -c и -n.

Давайте теперь проверим производительность Apache. Используйте следующую команду:

$ ab -n 100 -c 10 http://13.209.21.196:8080/trade-server/test/order/testQueue

-n 100 означает, что общее количество запросов равно 100 -c 10 указывает, что количество одновременных пользователей равно 10 http://13.209.21.196:8080/trade-server/test/order/testQueue представляет целевой URL-адрес запроса.

Эта строка означает обработку 100 запросов и одновременное выполнение 10 запросов каждый раз.

На приведенном выше рисунке результаты теста очевидны. Пропускная способность, полученная в результате теста ab, составляет: Запросов в секунду: 5655,47 [#/сек] (среднее).

Кроме того, есть еще некоторая информация, которую необходимо объяснить, а именно: Server Softwareзначит проходит тестированиеWebсервер Название программного обеспечения。

Server Hostnameвыражает просьбуURLимя хоста。

Server Portзначит проходит тестированиеWebсервер Программный порт прослушивания。

Document Pathвыражает просьбуURLкорневой абсолютный путь в,Передайте суффикс имени файла,В целом мы можем понять тип запроса.

Document LengthвыражатьHTTPДлина тела данных ответа。

Concurrency Levelвыражать Количество одновременных пользователей,Это один из параметров, которые мы устанавливаем.

Time taken for testsвыражать Общее время, необходимое для обработки всех этих запросов.。

Complete requestsвыражать Общее количество запросов,Это один из параметров, которые мы устанавливаем.

Failed requestsвыражать Количество неудачных запросов,Под сбоем здесь подразумевается ненормальность запроса во время соединения, отправки данных и т. д.,и тайм-аут после отсутствия ответа. Если информация заголовка полученных данных ответа HTTP содержит код состояния, отличный от 2XX,Тогда в результатах теста отобразится другой файл с именем «Non-2xx». Статистический элемент «ответы» используется для подсчета количества запросов в этой части. Эти запросы не включаются в невыполненные запросы.

Total transferredвыражать Сумма длин данных ответа всех запросов.,Включает информацию заголовка и длину основных данных каждого ответа HTTP. Обратите внимание, что сюда не входит длина данных HTTP-запроса.,Только общая длина данных прикладного уровня, поступающих на компьютер пользователя с веб-сервера.

HTML transferredвыражать Сумма данных тела в данных ответа для всех запросов.,То естьдаминусTotal Длина информации заголовка в передаваемых данных ответа HTTP.

Requests per secondПропускная способность,Также называется QPS,Формула расчета: Полные запросы/Время, затраченное на тесты.

Time per requestСреднее время ожидания запроса пользователя,С точки зрения пользователя,Время, необходимое для выполнения запроса. Формула расчета: токен времени для тестов/(Выполненные запросы/Уровень параллелизма).

Time per requet(across all concurrent request)сервер Время выполнить запрос,Формула расчета: Время taken for tests/Complete запросов, что в точности обратно пропорционально пропускной способности. Его также можно рассчитать следующим образом: Время per request/Concurrency Level。

Transfer rateвыражать Скорость передачи данных по сети,Формула расчета:Total trnasferred/ Time taken for тестах эта статистика является хорошим показателем спроса на исходящую широкополосную связь, когда вычислительная мощность сервера достигает своего предела.

При тестировании запросов к большим файлам это значение может легко стать узким местом системы. Чтобы определить, является ли это значение узким местом, необходимо понять условия сети между клиентом и тестируемым сервером, включая такую ​​информацию, как пропускная способность сети и скорость сетевой карты.

Percentage of requests served within a certain time(ms) Эта часть данных используется для описания распределения времени обработки каждого запроса. Например, в приведенном выше тесте 80% времени обработки запроса не превышает 2 мс. Это время обработки относится к предыдущему времени. per запроса, то есть среднее время обработки каждого запроса для одного пользователя.

Первая строка этой таблицы показывает, что 50% запросов выполняются в течение 2 мс. Вы можете видеть, что это значение относительно близко к среднему времени ответа системы и так далее.

Connection Times (ms)

Connection Times (ms)               min  mean[+/-sd] median  max Connect:        0    1  0.1      1      1 Processing:    1    1  0.2      1      2 Waiting:        1    1  0.2      1      2 Total:          1    2  0.2      2      2

Таблица, состоящая из этих строк, предназначена в основном для сегментации и статистики времени ответа, то есть первого времени на запрос. Время ответа запроса можно разделить на три части: сетевое соединение (Connect), системная обработка (Processing) и ожидание (Waiting). В таблице min представляет собой минимальное значение; среднее значение представляет собой среднее значение; [+/-sd] представляет собой стандартное отклонение (стандартное отклонение), также известное как среднеквадратическая ошибка. Это понятие изучалось на уроках математики в средней школе и представляет собой. степень дискретности данных, чем больше значение, тем более разбросаны данные и тем нестабильнее время отклика системы. медиана представляет собой медиану, максимум, конечно, представляет максимальное значение.

Следует отметить, что Total в таблице не равна сумме первых трех строк данных, поскольку данные первых трех строк не собираются в одном запросе. Сетевая задержка определенного запроса может быть причиной. самый короткий, но время обработки системы является самым длинным. Таким образом, Total рассчитывается с точки зрения времени, необходимого для выполнения всего запроса. Здесь вы можете видеть, что самый медленный запрос занял 2 мс (т.е. 100% 2 (самый длинный запрос)).

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