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.

Для установки данного пакета выполните следующую команду:

# aptitude install apache2-utils

Если вы хотите протестировать производительность Apache с помощью Apache Benchmark на локальной системе, то можно воспользоваться командой вида:

# ab -kc 10 -t 60 http://localhost/

Эта команда откроет 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 <table>-attributes - строка для использования в качестве атрибутов для <table>. Атрибуты вставляются <table СЮДА >.

-y <tr>-attributes - строка атрибутов для <tr>.

-z <td>-attributes - строка атрибутов для <td>.

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

С полным набором параметров можно ознакомиться выполнив команду man ab в командной строке.

Пример использования

# ab -c 10 -n 6000 http://localhost:8080/

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 600 requests
Completed 1200 requests
Completed 1800 requests
Completed 2400 requests
Completed 3000 requests
Completed 3600 requests
Completed 4200 requests
Completed 4800 requests
Completed 5400 requests
Completed 6000 requests
Finished 6000 requests


Server Software:        Apache/2.2.16
Server Hostname:        localhost
Server Port:            8080

Document Path:          /
Document Length:        13913 bytes

Concurrency Level:      10
Time taken for tests:   48.531 seconds
Complete requests:      6000
Failed requests:        1
   (Connect: 0, Receive: 0, Length: 1, Exceptions: 0)
Write errors:           0
Total transferred:      84705880 bytes
HTML transferred:       83464087 bytes
Requests per second:    123.63 [#/sec] (mean)
Time per request:       80.884 [ms] (mean)
Time per request:       8.088 [ms] (mean, across all concurrent requests)
Transfer rate:          1704.50 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.9      0      33
Processing:    20   81  16.7     80     230
Waiting:        0   63  16.8     62     163
Total:         20   81  16.7     80     230

Percentage of the requests served within a certain time (ms)


  50%     80
  66%     87
  75%     91
  80%     93
  90%    100
  95%    107
  98%    116
  99%    124
100%    230 (longest request)

Наверх

Опубликовано