ab — инструмент тестирования производительности веб-сервера Apache HTTP
ab — инструмент для тестирования производительности вашего сервера Apache Hypertext Transfer Protocol (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- Передать серверу учетные данные для базовой аутентификации. Имя пользователя и пароль разделяются одним символом
:и передаются по сети в кодировке 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- Передать учетные данные для базовой аутентификации промежуточному прокси-серверу. Имя пользователя и пароль разделяются одним символом
:и передаются по сети в кодировке base64. Строка отправляется независимо от того, нужны ли они прокси-серверу (т. е., отправил ли он ответ 407 с запросом аутентификации на прокси-сервере). -q- При обработке более 150 запросов
abвыводит вstderrсчетчик выполнения примерно каждые 10% или 100 запросов. Флаг-qотключает эти сообщения. -r- Не завершать работу при ошибках приема данных из сокета.
-s timeout- Максимальное время ожидания до истечения тайм-аута сокета, в секундах. Значение по умолчанию — 30 секунд. Доступно начиная с версии 2.4.4.
-S- Не отображать медиану и стандартное отклонение, а также предупреждения и сообщения об ошибках, если среднее значение и медиана различаются более чем на одно или два стандартных отклонения. Вместо этого по умолчанию отображаются минимальное/среднее/максимальное значения. (Для обратной совместимости.)
-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:
- Программное обеспечение сервера
- Значение, если оно есть, возвращенное в HTTP-заголовке 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