Бенчмаркинг HTTP сервера программой ab (Apache Bench)

В ряде Unix дистрибутивов программка ab идёт предустановленной, в остальных — поставляется с Apache. Поговаривают, что в некоторых странах её несанкционированное использование на чужих серверах(в качестве цели) запрещено и даже карается уголовно. Давайте рассмотрим запретный плод, чем же тут можно «пошухарить» и что она умеет.

Например, выполнить 100 последовательных GET запросов к URL можно так:

ab -n [100] [url]

Выполнить 100 запросов HTTP GET, обрабатывая до 10 запросов одновременно, по заданному URL

ab -n [100] -c [10] [url]

Использовать Keep alive

ab -k [url]

Установить максимальное количество секунд, которое нужно потратить на тестирование

ab -t [60] [url]

Выполнить 100 запросов HTTP POST к заданному URL-адресу, используя полезную нагрузку JSON из файла.

ab -n [100] -T [application/json] -p [data.json] [url]

Синтаксис Apache Bench

ab  [ -A auth-username:password ] [ -b windowsize ] [ -B local-address ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-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]://]host‐name[:port]/path

ab — это инструмент для тестирования вашего сервера Apache Hypertext Transfer Protocol (HTTP). Он разработан, чтобы дать вам представление о том, как работает ваша текущая установка Apache. Это особенно показывает, сколько запросов в секунду может обслуживать ваша установка Apache. Так написано в документации. Добавлю свой комментарий)

Апач тут вообще не причем — это лишь лейба производителя. Подойдёт для любых серверов. Параметр X выглядит наиболее привлекательным. Я знаю) Всё это просится под конструкцию while/for с ампрсандиком на конце и некоторыми рандомными штучками) Не правда-ли? При наличии хорошего списка прокси,  и широкого канала, равноценную машину завалить, причем гибридной атакой — раз плюнуть. В случае же сомнений в своих мощностях, утилитой сперва легко можно нащупать наиболее медленно отвечающие странички целевого сайта и «ударить» уже чисто по ним.

Да, пошухарить можно нормально. Вот за такое уголовно ставят в угол уже почти везде. Не делайте так. Мы ЖЫ добрые.

Параметры команды ab

Использование: ab [параметры] [http[s]://]имя хоста[:порт]/путь
Варианты:
    -n запросы Количество запросов для выполнения
    -c concurrency Количество одновременных запросов
    -t timelimit Максимальное количество секунд в секундах. потратить на сравнительный анализ
                    Это означает -n 50000
    -s таймаут Макс. ждать каждого ответа
                    По умолчанию 30 секунд
    -b windowsize Размер буфера отправки / получения TCP в байтах
    -B адрес Адрес для привязки при исходящих соединениях
    -p postfile Файл, содержащий данные для POST. Не забудьте также установить -T
    -u putfile Файл, содержащий данные для PUT. Не забудьте также установить -T
    -T content-type Заголовок типа содержимого для использования для данных POST / PUT, например.
                    'application / x-www-form-urlencoded'
                    По умолчанию - text / plain.
    -v verbosity Сколько информации для устранения неполадок нужно распечатать
    -w Распечатать результаты в HTML-таблицах
    -i Использовать HEAD вместо GET
    -x attributes Строка для вставки в качестве атрибутов таблицы
    -y attributes Строка для вставки в качестве атрибутов tr
    -z attributes Строка для вставки как td или th атрибутов
    -C attribute Добавить cookie, например. 'Apache = 1234'. (повторяемый)
    -H атрибут Добавить произвольную строку заголовка, например. 'Accept-Encoding: gzip'
                    Вставляется после всех обычных строк заголовка. (повторяемый)
    -A attribute Добавить базовую аутентификацию WWW, атрибуты
                    представляют собой имя пользователя и пароль, разделенные двоеточием.
    -P attribute Добавить Basic Proxy Authentication, атрибуты
                    представляют собой имя пользователя и пароль, разделенные двоеточием.
    -X прокси: порт прокси-сервера и номер порта для использования
    -V Распечатать номер версии и выйти
    -k Использовать функцию HTTP KeepAlive
    -d Не отображать процентили обслуживаемой таблицы.
    -S Не показывать оценки достоверности и предупреждения.
    -q Не показывать прогресс при выполнении более 150 запросов
    -l Принять переменную длину документа (использовать для динамических страниц)
    -g filename Вывести собранные данные в файл формата gnuplot.
    -e имя_файла Выводить CSV-файл с обслуживаемым процентом
    -r Не выходить из-за ошибок получения сокета.
    -m метод Имя метода
    -h Показать информацию об использовании (это сообщение)
    -I Отключить расширение TLS Server Name Indication (SNI)
    -Z ciphersuite Указать набор шифров SSL / TLS (см. Шифры openssl)
    -f протокол Укажите протокол SSL / TLS
                    (TLS1, TLS1.1, TLS1.2 или ВСЕ)

Параметры подробно:

       -A auth-username: пароль
              Предоставьте серверу учетные данные BASIC Authentication. Имя пользователя и пароль разделяются одной: и отправляются по сети.
              в кодировке base64. Строка отправляется независимо от того, нужна ли она серверу (т. Е. Отправил запрос аутентификации 401).

       -b размер окна
              Размер буфера отправки / приема TCP в байтах.

       -B локальный адрес
              Адрес для привязки при исходящих соединениях.

       -c параллелизм
              Количество одновременных запросов на выполнение. По умолчанию - один запрос за раз.

       -C cookie-имя = значение
              Добавьте в запрос строку Cookie :. Аргумент обычно имеет форму пары имя = значение. Это поле повторяется.

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

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

       -f протокол
              Укажите протокол SSL / TLS (SSL2, SSL3, TLS1, TLS1.1, TLS1.2 или ALL). Поддержка TLS1.1 и TLS1.2 доступна в 2.4.4 и новее.

       -g gnuplot-файл
              Запишите все измеренные значения в файл 'gnuplot' или TSV (значения на вкладке). Этот файл можно легко импортировать в такие пакеты, как
              Gnuplot, IDL, Mathematica, Igor или даже Excel. Ярлыки находятся в первой строке файла.

       -h Показать информацию об использовании.

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

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

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

       -l Не сообщать об ошибках, если длина ответов непостоянна. Это может быть полезно для динамических страниц. Доступно в версиях 2.4.7 и
              позже.

       -m HTTP-метод
              Пользовательский метод HTTP для запросов. Доступно в версии 2.4.10 и новее.

       -n запросов
              Количество запросов, которые нужно выполнить для сеанса тестирования. По умолчанию выполняется всего один запрос, который обычно приводит к
              нерепрезентативные результаты сравнительного анализа.

       -p POST-файл
              Файл, содержащий данные для POST. Не забудьте также установить -T.

       -P proxy-auth-username: пароль
              Предоставьте учетные данные BASIC Authentication прокси на маршруте. Имя пользователя и пароль разделяются одной: и отправляются на
проводное кодирование base64. Строка отправляется независимо от того, нужна ли она прокси-серверу (т. Е. Отправлено 407 прокси-аутентификации).

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

       -r Не выходить из-за ошибок получения сокета.

       -s тайм-аут
              Максимальное количество секунд ожидания до истечения времени ожидания сокета. По умолчанию 30 секунд. Доступно в версии 2.4.4 и новее.

       -S Не отображать значения медианы и стандартного отклонения, а также не отображать сообщения с предупреждениями / ошибками, когда среднее значение и медиана больше
              чем одно или два раза больше стандартного отклонения. И по умолчанию значения min / avg / max. (поддержка старых версий).

       -t ограничение по времени
              Максимальное количество секунд, которое нужно потратить на тестирование. Это подразумевает -n 50000 внутри. Используйте это, чтобы протестировать сервер в
              фиксированное общее количество времени. По умолчанию ограничений по времени нет.

       -T тип содержимого
              Заголовок типа содержимого для использования для данных POST / PUT, например. приложение / x-www-form-urlencoded. По умолчанию text / plain.

       -u PUT-файл
              Файл, содержащий данные для PUT. Не забудьте также установить -T.

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

       -V Показать номер версии и выйти.

       -w Распечатать результаты в HTML-таблицах. Таблица по умолчанию состоит из двух столбцов с белым фоном.

       -x <таблица> -атрибуты
              Строка для использования в качестве атрибутов для <table>. Атрибуты вставляются <таблица здесь>.

       -X прокси [: порт]
              Используйте прокси-сервер для запросов.

       -y <tr> -атрибуты
              Строка для использования в качестве атрибутов для <tr>.

       -z <td> -атрибуты
              Строка для использования в качестве атрибутов для <td>.

       -Z шифровальный набор
              Укажите набор шифров SSL / TLS (см. Шифры openssl)

 

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *