ab — инструмент Apache HTTP сервера для бенчмаркинга
ab — инструмент для бенчмаркинга вашего Apache HTTP-сервера. Он предназначен для предоставления представления о производительности вашей текущей установки Apache. Это особенно показывает, сколько запросов в секунду ваша установка Apache способна обработать.
Синопсис
ab [ -A auth-username:password ] [ -b windowsize ] [ -B local-address ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -E client-certificate file ] [ -f protocol ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -l ] [ -m HTTP-method ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -r ] [ -s timeout ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -u PUT-file ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [ -Z ciphersuite ] [http[s]://]hostname[:port]/path
Параметры
-A auth-username:password- Предоставляет учетные данные аутентификации BASIC для сервера. Имя пользователя и пароль разделены одним
:и отправляются по сети в кодировке base64. Строка отправляется независимо от того, нужен ли она серверу (т.е., был ли отправлен запрос 401 об аутентификации). -b windowsize- Размер буфера отправки/приёма TCP в байтах.
-B local-address- Адрес для привязки при установлении исходящих соединений.
-c concurrency- Количество одновременных запросов. По умолчанию выполняется один запрос за раз.
-C cookie-name=value- Добавляет строку
Cookie:к запросу. Аргумент обычно имеет вид парыname=value. Этот параметр можно использовать многократно. -d- Не отображать таблицу "процент обработанных запросов в течение XX [мс]". (для совместимости со старыми версиями).
-e csv-file- Записывает файл со значениями, разделёнными запятыми (CSV), содержащий для каждого процента (от 1% до 100%) время (в миллисекундах), затраченное на обработку этого процента запросов. Обычно это более полезно, чем файл 'gnuplot', так как результаты уже "сгруппированы".
-E client-certificate-file- При подключении к веб-сайту с SSL использует предоставленный сертификат клиента в формате PEM для аутентификации на сервере. Файл должен содержать сертификат клиента, промежуточные сертификаты и закрытый ключ. Доступно в версии 2.4.36 и более поздних.
-f protocol- Указывает протокол SSL/TLS (SSL2, SSL3, TLS1, TLS1.1, TLS1.2 или ALL). Поддержка TLS1.1 и TLS1.2 доступна в версии 2.4.4 и более поздних.
-g gnuplot-file- Записывает все измеренные значения в файл 'gnuplot' или TSV (табулированные значения). Этот файл можно легко импортировать в пакеты, такие как Gnuplot, IDL, Mathematica, Igor или даже Excel. Заголовки находятся в первой строке файла.
-h- Отобразить информацию об использовании.
-H custom-header- Добавляет дополнительные заголовки к запросу. Аргумент обычно имеет вид корректной строки заголовка, содержащей пару поле-значение, разделённые двоеточием (т.е.,
"Accept-Encoding: zip/zop;8bit"). -i- Выполнить
HEADзапросов вместоGET. -k- Включить функцию HTTP KeepAlive, т.е., выполнять несколько запросов в одной сессии HTTP. По умолчанию KeepAlive отключен.
-l- Не сообщать об ошибках, если длина ответов не постоянна. Это может быть полезно для динамических страниц. Доступно в версии 2.4.7 и более поздних.
-m HTTP-method- Настраиваемый HTTP-метод для запросов. Доступно в версии 2.4.10 и более поздних.
-n requests- Количество запросов для сессии бенчмаркинга. По умолчанию выполняется один запрос, что обычно приводит к нерепрезентативным результатам бенчмаркинга.
-p POST-file- Файл, содержащий данные для POST-запроса. Не забудьте также установить
-T. -P proxy-auth-username:password- Предоставляет учетные данные аутентификации BASIC для прокси-сервера на пути. Имя пользователя и пароль разделены одним
:и отправляются по сети в кодировке base64. Строка отправляется независимо от того, нужен ли она прокси-серверу (т.е., был ли отправлен запрос 407 об аутентификации прокси). -q- При обработке более 150 запросов
abвыводит счётчик прогресса вstderrкаждые 10% или каждые 100 запросов. Флаг-qподавляет эти сообщения. -r- Не завершать работу при ошибках приёма сокета.
-s timeout- Максимальное время ожидания в секундах перед истечением срока действия сокета. По умолчанию 30 секунд. Доступно в версии 2.4.4 и более поздних.
-S- Не отображать медианные и стандартные отклонения, а также не отображать предупреждения/сообщения об ошибках, когда среднее и медианное значения отличаются более чем в 1 или 2 раза от стандартного отклонения. И по умолчанию использовать минимальные, средние и максимальные значения. (для совместимости со старыми версиями).
-t timelimit- Максимальное время в секундах для бенчмаркинга. Это подразумевает
-n 50000внутри. Используйте это для проведения бенчмаркинга сервера в течение фиксированного общего времени. По умолчанию ограничение по времени отсутствует. -T content-type- Заголовок Content-type для POST/PUT данных, например,
application/x-www-form-urlencoded. По умолчаниюtext/plain. -u PUT-file- Файл, содержащий данные для PUT. Не забудьте также установить
-T. -v verbosity- Уровень детализации вывода —
4и выше печатает информацию о заголовках,3и выше печатает коды ответов (404, 200 и т. д.),2и выше печатает предупреждения и информацию. -V- Отобразить номер версии и выйти.
-w- Выводить результаты в HTML-таблицах. По умолчанию таблица имеет ширину две колонки и белый фон.
-x <table>-attributes- Строка, используемая в качестве атрибутов для
<table>. Атрибуты вставляются<table here >. -X proxy[:port]- Использовать прокси-сервер для запросов.
-y <tr>-attributes- Строка, используемая в качестве атрибутов для
<tr>. -z <td>-attributes- Строка, используемая в качестве атрибутов для
<td>. -Z ciphersuite- Указать набор шифров SSL/TLS (см. openssl ciphers)
Вывод
Следующий список описывает значения, возвращаемые ab:
- Программное обеспечение сервера
- Значение, если есть, возвращённое в заголовке server первого успешного ответа. Включает все символы в заголовке с начала до момента обнаружения символа с десятичным значением 32 (прежде всего: пробел или CR/LF).
- Имя хоста сервера
- DNS или IP-адрес, указанный в командной строке
- Порт сервера
- Порт, к которому подключается ab. Если порт не указан в командной строке, по умолчанию используется 80 для http и 443 для https.
- Протокол SSL/TLS
- Параметры протокола, согласованные между клиентом и сервером. Будет напечатан только в случае использования SSL.
- Путь к документу
- URI запроса, полученный из строки командной строки.
- Длина документа
- Это размер в байтах первого успешно возвращённого документа. Если длина документа меняется во время тестирования, ответ считается ошибочным.
- Уровень параллельности
- Количество одновременных клиентов, используемых во время теста.
- Время выполнения тестов
- Это время с момента создания первого сокетного соединения до момента получения последнего ответа.
- Обработанные запросы
- Количество полученных успешных ответов.
- Неудачные запросы
- Количество запросов, которые были признаны неудачными. Если число больше нуля, будет напечатана дополнительная строка, показывающая количество запросов, которые не удалось обработать из-за подключения, чтения, неправильной длины содержимого или исключений.
- Ошибки записи
- Количество ошибок, возникших во время записи (разрыв соединения).
- Ответы, отличные от 2xx
- Количество ответов, которые не относились к серии кодов ответов 200. Если все ответы были 200, это поле не печатается.
- Запросы Keep-Alive
- Количество подключений, которые привели к запросам Keep-Alive.
- Общая отправленная длина тела
- Если было настроено отправлять данные в ходе теста, это общее количество байтов, отправленных во время тестов. Это поле опущено, если тест не включал отправку тела.
- Общая длина переданных данных
- Общее количество байтов, полученных от сервера. Это число по существу равно количеству байтов, отправленных по сети.
- Переданная длина HTML
- Общее количество байтов документа, полученных от сервера. Это число не включает байты, полученные в HTTP-заголовках.
- Запросы в секунду
- Количество запросов в секунду. Это значение является результатом деления количества запросов на общее затраченное время.
- Время на запрос
- Среднее время, затраченное на каждый запрос. Первое значение вычисляется по формуле
concurrency * timetaken * 1000 / done, а второе — по формулеtimetaken * 1000 / done - Скорость передачи
- Скорость передачи, вычисленная по формуле
totalread / 1024 / timetaken
Ошибки
Существует множество статически объявленных буферов фиксированной длины. В сочетании с ленивой обработкой аргументов командной строки, заголовков ответов от сервера и других внешних входов, это может привести к ошибкам.
Он не реализует полностью HTTP/1.x; принимает только некоторые «ожидаемые» формы ответов. Довольно интенсивное использование strstr(3) в первую очередь наблюдается в профиле, что может указывать на проблему производительности; т.е., вы будете измерять производительность ab а не сервера.
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/programs/ab.html