AB (Apache Benchmark) — тест производительности сервера
AB — это утилита для тестирования производительности вашего веб-сервера Apache. Она создана для того, чтобы вы могли определить производительность вашей текущей настройки Apache. В первую очередь, AB показывает сколько запросов в секунду ваш Apache способен обслужить.
Установка AB в Debian
Если вы хотите использовать apache ab в Debian, то вам необходимо установить пакет называемый «apache2-utils«.
Этот пакет содержит полезные утилиты для веб-серверов:
- ab — Apache benchmark tool,
- logresolve — разрешает IP-адреса в имена хостов в логах,
- htpasswd — производит действия над файлами базовой аутентификации,
- htdigest — действия над аутентификационными файлами в формате digest,
- dbmmanage — то же для файлов с аутентификационными данными в формате DBM, использует perl,
- htdbm — то же, что и утилита выше, но использует APR,
- rotatelogs — периодически прекращает запись в лог-файл и создает новый,
- split-logfile — делит единый лог-файл, включая множество виртуальных хостов,
- checkgid — проверяет может ли вызывающий установить gid на определенную группу,
- check_forensic — извлекает вывод mod_log_forensic из лог-файлов Apache.
Для установки данного пакета выполните следующую команду:
Если вы хотите протестировать производительность Apache с помощью Apache Benchmark на локальной системе, то можно воспользоваться командой вида:
Эта команда откроет 10 соединений с использанием Keep-Alive и будет нагружать localhost в течение 60 секунд через эти соединения. Когда процесс завершится, вы получите некоторую информацию о результатах теста. Для получения более правильных результатов лучше воспользоваться утилитой AB с другой машины.
Некоторые параметры утилиты AB
-A auth-username:password — передать данные для базовой аутентификации. То есть, фактически можно тестировать даже если доступ закрыт с помощью базовой аутентификации (htpasswd).
-c concurrency — количество параллельных запросов в единицу времени. По умолчанию, один реквест в единицу времени (можно считать, что в секунду).
-С cookie-name=value — добавлять куки. Задается в виде пары имя=значение. Это поле можно повторять.
-f protocol — задает SSL/TLS протокол (SSL2, SSL3, TLS1, or ALL).
-h — отобразить краткую справку по параметрам
-k — включить KeepAlive, то есть осуществлять множество запросов в течение одной HTTP-сессии. По умолчанию данная возможность отключена.
-n requests — количество запросов, которое необходимо выполнить в течение сессии тестирования. По умолчанию, выполняется только один запрос, что не дает общей картины.
-q — подавляет вывод некоторых сообщений о процессе тестирования.
-t timelimit — максимальное количество секунд, которое необходимо затратить на тестирование. Это подразумевает значание параметра -n равное 50000. По умолчанию временной лимит не установлен.
-v verbosity — устанавливает уровень «разговорчивости»: 4 и выше отображает информацию о заголовках, 3 и выше — информацию о кодах ответа (404, 200 и т. д.), 2 и выше — выводить предупреждения и прочую информацию.
-V — отобразить версию и выйти.
-w — вывести результаты в виде HTML-таблицы. По умолчанию таблица состоит из двух колонок с белым фоном.
-x
-attributes — строка атрибутов для | . -X proxy[:port] — использовать прокси-сервер для запросов. С полным набором параметров можно ознакомиться выполнив команду man ab в командной строке. Пример использованияThis is ApacheBench, Version 2.3 Benchmarking localhost (be patient) Server Software: Apache/2.2.16 Document Path: / Concurrency Level: 10 Connection Times (ms) Percentage of the requests served within a certain time (ms) 50% 80 О чём говорит apache benchmarkКогда я первый раз столкнулся с задачей оптимизации скорости работы сайта, я начал рыскать по просторам интернета, чтобы получить хоть какое-то представление о том, как эта самая оптимизация делается. Именно тогда я в первый раз услышал об утилите “apache benchmark“, которая как сказано в описании официального сайта apache «главным образом показывает, как много запросов способен выполнить ваш сервер». Прочитав документацию, я решил опробовать утилиту в действии, а в качестве подопытного использовать сайт самих разработчиков apache. После того как я прописал в консоль “ ab -c10 -n100 httpd.apache.org/ “, мне сообщили что «httpd.apache.org» бенчмаркетится (benchmarkering), что если верить словарю переводится как «тестируется». Также мне посоветовали быть терпеливым, что я собственно и сделал. Спустя некоторое время, утилита выдала информацию о результатах своего труда. Должен признать, что увидев данную таблицу впервые, я не понял ровным счетом ничего, и вынести для себя какую-то полезную информацию было достаточно тяжело. Потратив некоторое время я, конечно, во всем разобрался, и сейчас хочу поделиться тем, как я понимаю то, о чем нам говорит “apache benchmark“. Итак, результаты тестирования были следующими:
Server Port: 80 — при тестировании использовался 80-й порт. Document Path: / — путь к документу. В нашем случае — основная директория. Document Length: 13666 bytes — размер документа — 13,6Кб. Причем, это размер не учитывающий встроенные элементы, например, изображения. Сохранив страницу на локальный компьютер, можно увидеть, что на странице размещены два изображения общим размером 18Кб, а вот сам html файл страницы весит приблизительно 14Кб. Concurrency Level: 10 — если перевести, то это будет звучать как «уровень параллелизма». О чем-нибудь говорит? Когда я увидел это впервые, мне это не говорило ни о чём. Немного поразмыслив, я предположил, что это количество одновременных запросов, которое выполнял сервер в процессе тестирования. Проделав еще несколько тестов, изменяя опцию “-cN”, я понял что оказался прав. Time taken for tests: 28.252 seconds — тестирование выполнялось в течении 28-и с лишним секунд. Complete requests: 100 — было выполнено 100 запросов. Failed requests: 0 — неудачно выполненных запросов было 0. Write errors: 0 — ошибок в журнал записано не было. Total transferred: 1404503 bytes — общее количество информации, которое было получено от сайта httpd.apache.org. HTML transferred: 1372882 bytes — похоже, что сюда не включены изображения, флеш-анимации и прочее. Если мы поделим «HTML transferred» на «Document Length», то получим 100 с копейками, что соответствует значению выполненных запросов «Complete requests». Requests per second: 3.54 [#/sec] (mean) — количество запросов за секунду. Это среднее значение — результат деления «Complete requests» на «Time taken for tests». Time per request: 2825.237 [ms] (mean) — время, в течении которого выполнялись 10 параллельных запросов. Time per request: 282.524 [ms] (mean, across all concurrent requests) — время, в течении которого выполнялся один запрос. То есть значение «Time per request», разделённое на «Concurrency Level». Transfer rate: 48.55 [Kbytes/sec] received — скорость, с которой apache benchmark получал информацию с тестируемого сервера. Connection Times (ms) — таблица со временем соединения в миллисекундах. Здесь мы имеем таблицу с четырьмя строчками и четырьмя столбцами:
Исходя из результатов тестирования видно, что самый быстрый запрос был выполнен за 1.194 секунды, а самый медленный за 10.614 секунд. Percentage of the requests served within a certain time (ms) — доля запросов, выполненных в определенное время. То есть 80 процентов всех запросов выполнились в течении 2-х с небольшим секунд. А самый долгий запрос выполнялся 10 с лишним секунд. AB (Apache Benchmark) — тест производительности сервераAB — это утилита для тестирования производительности вашего веб-сервера Apache. Она создана для того, чтобы вы могли определить производительность вашей текущей настройки Apache. В первую очередь, AB показывает сколько запросов в секунду ваш Apache способен обслужить. Установка AB в DebianЕсли вы хотите использовать apache ab в Debian, то вам необходимо установить пакет называемый «apache2-utils«. Этот пакет содержит полезные утилиты для веб-серверов:
Для установки данного пакета выполните следующую команду: Если вы хотите протестировать производительность Apache с помощью Apache Benchmark на локальной системе, то можно воспользоваться командой вида: Эта команда откроет 10 соединений с использанием Keep-Alive и будет нагружать localhost в течение 60 секунд через эти соединения. Когда процесс завершится, вы получите некоторую информацию о результатах теста. Для получения более правильных результатов лучше воспользоваться утилитой AB с другой машины. Некоторые параметры утилиты AB-A auth-username:password — передать данные для базовой аутентификации. То есть, фактически можно тестировать даже если доступ закрыт с помощью базовой аутентификации (htpasswd). -c concurrency — количество параллельных запросов в единицу времени. По умолчанию, один реквест в единицу времени (можно считать, что в секунду). -С cookie-name=value — добавлять куки. Задается в виде пары имя=значение. Это поле можно повторять. -f protocol — задает SSL/TLS протокол (SSL2, SSL3, TLS1, or ALL). -h — отобразить краткую справку по параметрам -k — включить KeepAlive, то есть осуществлять множество запросов в течение одной HTTP-сессии. По умолчанию данная возможность отключена. -n requests — количество запросов, которое необходимо выполнить в течение сессии тестирования. По умолчанию, выполняется только один запрос, что не дает общей картины. -q — подавляет вывод некоторых сообщений о процессе тестирования. -t timelimit — максимальное количество секунд, которое необходимо затратить на тестирование. Это подразумевает значание параметра -n равное 50000. По умолчанию временной лимит не установлен. -v verbosity — устанавливает уровень «разговорчивости»: 4 и выше отображает информацию о заголовках, 3 и выше — информацию о кодах ответа (404, 200 и т. д.), 2 и выше — выводить предупреждения и прочую информацию. -V — отобразить версию и выйти. -w — вывести результаты в виде HTML-таблицы. По умолчанию таблица состоит из двух колонок с белым фоном. -x
|