Apache Bench: тестируем работу веб-сервера

Автор: | 27/08/2012

Утилита Apache Bench (ab) предназначена для тестирования работы web-сервера и эмуляции нагрузки им сервера.

Установка на Debian/Ubuntu:

$ sudo apt-get install apache2-utils

Синтаксис запроса:

$ ab [options] [http[s]://]hostname[:port]/path

Наиболее полезные Ключи:

-n requests             Количество запросов, которое надо выполнить;
-c concurrency      Кол-во одновременных запросов;
-t timelimit            Максимальное время ожидания ответа;
-b windowsize         Размер буфера TCP send/receive, в байтах;
-p postfile              Файл, содержащий данные для построения POST-запроса. Требуется использование ключа -T;
-u putfile          Файл, содержащий данные для построения PUT-запроса. Требуется использование ключа -T;
-T content-type    Заголовок с указанием content-type, например:
‘application/x-www-form-urlencoded’
По-умолчанию используется ‘text/plain’
-v verbosity           How much troubleshooting info to print;
-w                                    Выводить результат в HTML;
-i                                    Использовать HEAD вместо GET;
-X proxy:port       Использовать прокси-сервер;
-V                                   Показать версию  Apache Bench и выйти;
-h                                   Показать список ключей.

Пример – выполнить 100 запросов, максимум 10 одновременно, к серверу ya.ru:

# ab -n 100 -c 10 http://www.ya.ru/
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 www.ya.ru (be patient)…..done

Server Software:        nginx
Server Hostname:        www.ya.ru
Server Port:            80

Document Path:          /
Document Length:        4193 bytes

Concurrency Level:      10
Time taken for tests:   0.566 seconds
Complete requests:      100
Failed requests:        5
(Connect: 0, Receive: 0, Length: 5, Exceptions: 0)
Write errors:           0
Total transferred:      478110 bytes
HTML transferred:       420622 bytes
Requests per second:    176.82 [#/sec] (mean)
Time per request:       56.555 [ms] (mean)
Time per request:       5.656 [ms] (mean, across all concurrent requests)
Transfer rate:          825.57 [Kbytes/sec] received

Connection Times (ms)
min  mean[+/-sd] median   max
Connect:       21   22   0.8     21      24
Processing:    31   34   2.5     33      44
Waiting:       31   34   2.5     33      43
Total:         52   55   3.1     54      65
WARNING: The median and mean for the initial connection time are not within a normal deviation
These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)
50%     54
66%     55
75%     57
80%     57
90%     61
95%     62
98%     64
99%     65
100%     65 (longest request)

Не забывайте указывать файл или каталог при запросе, например http://www.ya.ru:80/.

Больше информации на странице разработчика тут>>>.

Аналогичная утилита, но с гораздо большими возможностями – Apache jMeter.