Что такое Apache Benchmark/ApacheBench/AB?
ApacheBench (ab) - это утилита командной строки для проведения нагрузочного тестирования веб-серверов. Она разработана для Apache HTTP Server, но может использоваться для тестирования любого веб-сервера, который поддерживает HTTP-протокол.
Основные функции AB
- Проведение нагрузочного тестирования: ab позволяет имитировать множество одновременных запросов к веб-серверу, чтобы оценить его производительность под нагрузкой.
- Измерение времени отклика: ab измеряет время отклика сервера на запросы, что позволяет оценить скорость обработки запросов.
- Определение пропускной способности: ab может определить максимальную пропускную способность сервера, то есть количество запросов, которые он может обрабатывать в секунду.
- Анализ ошибок: ab может обнаруживать и анализировать ошибки, которые возникают во время тестирования, чтобы помочь выявить проблемы в работе веб-сервера.
Пример использования
ab -n 1000 -c 100 -t 60 http://localhost:8080/
Предположим, вы хотели протестировать одновременно несколько URL-адресов. Вы можете сделать это, создав сценарий оболочки с несколькими вызовами ab. В конце каждой строки укажите &, что укажет команде запускаться в фоновом режиме. Вы также захотите перенаправить вывод в файл для каждого URL, используя > filename.
ab -n 1000 -c 100 -t 60 http://localhost:8080/ > localhost8080.txt &
ab -n 1000 -c 100 -t 60 http://localhost:5050 > localhost5050.txt &
Основные параметры ApacheBench
- -A auth-username:password - передать данные для базовой аутентификации.
- -n: Количество запросов для выполнения.
- -c: Количество одновременных запросов.
- -t: Время выполнения теста в секундах.
- -r: Запускает тест до тех пор, пока не будет получено нужное количество успешных запросов.
- -s: Устанавливает время задержки между запросами.
- -k: Включает keep-alive соединения.
- -С cookie-name=value - добавлять куки. Задается в виде пары имя=значение. Это поле можно повторять.
- -f protocol - задает SSL/TLS протокол (SSL2, SSL3, TLS1, or ALL).
- -h - отобразить краткую справку по параметрам
- -k - включить KeepAlive, то есть осуществлять множество запросов в течение одной HTTP-сессии.
- -q - подавляет вывод некоторых сообщений о процессе тестирования.
- -v verbosity - устанавливает уровень “разговорчивости”: 4 и выше отображает информацию о заголовках, 3 и выше - информацию о кодах ответа (404, 200 и т. д.), 2 и выше - выводить предупреждения и прочую информацию.
- -V - отобразить версию и выйти.
- -w - вывести результаты в виде HTML-таблицы. По умолчанию таблица состоит из двух колонок с белым фоном.
- -X proxy[:port] - использовать прокси-сервер для запросов.
С полным набором параметров можно ознакомиться выполнив команду man ab в командной строке.
Понимание выходных значений
Нам нужно понимать различные метрики, чтобы понимать различные выходные значения, возвращаемые ab.
- Серверное программное обеспечение — это имя веб-сервера, возвращаемое в заголовке HTTP первого успешного возврата.
- Имя хоста сервера — это DNS или IP-адрес, указанный в командной строке.
- Порт сервера — это порт, к которому подключается ab. Если порт не указан в командной строке, по умолчанию будет установлено значение 80 для http и 443 для https.
- Протокол SSL / TLS — это параметр протокола, согласованный между клиентом и сервером. Это будет напечатано, только если используется SSL.
- Путь документа — это URI запроса, проанализированный из строки командной строки.
- Длина документа — это размер в байтах первого успешно возвращенного документа.Если длина документа изменяется во время тестирования, ответ считается ошибкой.
- Уровень параллелизма — это количество одновременных клиентов (эквивалентных веб-браузерам), использованных во время теста.
- Время, затраченное на тесты — это время, затрачиваемое с момента создания первого сокетного соединения до момента получения последнего ответа.
- Выполнено запросов — количество полученных успешных ответов.
- Failed Requests — количество запросов, которые были признаны ошибочными. Если число больше нуля, будет напечатана другая строка, показывающая количество запросов, которые не были выполнены из-за подключения, чтения, неправильной длины содержимого или исключений.
- Всего перенесено — общее количество байтов, полученных с сервера. Это число по сути количество байтов, отправленных по проводам.
- Переданный HTML — общее количество байтов документа, полученных с сервера. Это число исключает байты, полученные в заголовках HTTP
- Количество запросов в секунду — это количество запросов в секунду. Это значение является результатом деления количества запросов на общее время.
- Время на запрос — среднее время, затраченное на запрос. Первое значение рассчитывается по формуле параллелизма * timetaken * 1000 / done, а второе значение рассчитывается по формуле timetaken * 1000 / done.
- Скорость передачи — скорость передачи, рассчитанная по формуле totalread / 1024 / timetaken.
Преимущества ApacheBench
- Простота использования: ab очень прост в использовании и не требует установки дополнительных библиотек.
- Быстрая настройка: ab позволяет легко настроить параметры теста и начать тестирование.
- Доступность: ab входит в состав большинства дистрибутивов Linux и доступен для других операционных систем.
Недостатки ApacheBench
- Ограниченные возможности: ab предоставляет базовые функции для нагрузочного тестирования и может не удовлетворить все требования.
- Негибкий сценарий: ab не позволяет выполнять сложные сценарии тестирования с использованием множества разных запросов.
ApacheBench является хорошим инструментом для проведения базовых тестов производительности веб-сервера, но для более сложных сценариев тестирования может потребоваться использовать специализированные инструменты, такие как JMeter или Gatling.
Полезные ссылки
- Apache Bench — Краткое руководство
- Использование ApacheBench для тестирования нагрузки на веб-сервер
- [AB (Apache Benchmark) - тест производительности сервера(http://debian-help.ru/web-servers/ab-apache-benchmark-test-proizvoditelnosti-servera/)