
Что такое 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— таймаут сокета в секундах (по умолчанию 30).-k— включает keep-alive: множество запросов в течение одной HTTP-сессии.-C cookie-name=value— добавлять куки. Задается в виде пары имя=значение. Это поле можно повторять.-f protocol— задает SSL/TLS протокол (SSL2, SSL3, TLS1 или ALL).-h— отобразить краткую справку по параметрам.-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.
- Количество запросов в секунду — это количество запросов в секунду. Это значение является результатом деления количества запросов на общее время.
- Время на запрос — среднее время, затраченное на запрос. Первое значение рассчитывается по формуле concurrency _ timetaken _ 1000 / done, а второе значение рассчитывается по формуле timetaken * 1000 / done.
- Скорость передачи — скорость передачи, рассчитанная по формуле totalread / 1024 / timetaken.
Преимущества ApacheBench
- Простота использования: ab очень прост в использовании и не требует установки дополнительных библиотек.
- Быстрая настройка: ab позволяет легко настроить параметры теста и начать тестирование.
- Доступность: ab входит в состав большинства дистрибутивов Linux и доступен для других операционных систем.
Недостатки ApacheBench
- Ограниченные возможности: ab предоставляет базовые функции для нагрузочного тестирования и может не удовлетворить все требования.
- Негибкий сценарий: ab не позволяет выполнять сложные сценарии тестирования с использованием множества разных запросов.
ApacheBench является хорошим инструментом для проведения базовых тестов производительности веб-сервера, но для более сложных сценариев тестирования может потребоваться использовать специализированные инструменты, такие как JMeter или Gatling.