Полезно Тестирование web-сервера при помощи ab

baltun

Администратор
Сообщения
10.908
Реакции
2.597
Баллы
2.003
Пока ваш веб-сервер работает стабильно и стабильно отдаёт посетителям запрошенный контент — всё в порядке. Но задавали ли вы себе вопрос: а что будет, если нагрузка на сервер возрастёт? При помощи утилиты ab — Apache HTTP server benchmarking tool, инструмента, который позволит вам определить максимально возможное количество одновременных запросов, которые сможет обработать ваш веб-сервер. Утилита ab поставляется в комплекте с Apache, так что если он у вас установлен — у вас есть уже всё необходимое.

Установка утилиты.
Код:
yum install httpd-tools

Теперь можно проводить тестирование веб-сервера. Для начала давайте организуем нагрузку нашему серверу в одну тысячу последовательных запросов. Для указания числа запросов используется опция n.
Код:
ab -n 1000 http://aserver.ashep:80/test.html

Видим результат:
Код:
Benchmarking aserver.ashep (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software:        Apache/2.2.14
Server Hostname:        aserver.ashep
Server Port:            80
Document Path:          /test.html
Document Length:        177 bytes

Concurrency Level:      1
Time taken for tests:   1.500 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      453000 bytes
HTML transferred:       177000 bytes
Requests per second:    666.58 [#/sec] (mean)
Time per request:       1.500 [ms] (mean)
Time per request:       1.500 [ms] (mean, across all concurrent requests)
Transfer rate:          294.88 [Kbytes/sec] received

Расшифруем некоторые поля:
  • Concurrency Level: количество одновременно-отправляемых запросов — 1;
  • Time taken for tests: тысяча запросов к серверу заняла 1,5 секунды;
  • Complete requests: успешно получен ответ на всю тысячу запросов;
  • Failed requests: неудавшихся запросов — ноль;
  • Write errors: ошибок записи — ноль;
  • Total transferred: общий объём переданных данных: 453000 байт;
  • HTML transferred: из них «полезного» HTML — 177000 байт;
  • Requests per second: среднее количество запросов в секунду составило 666.58
  • Time per request: среднее время на один запрос 1,5 миллисекунды
  • Transfer rate: скорость обмена данными с сервером составила 294.88 килобайта в секунду.
Теперь посмотрим, как сервер поведёт себя, если вся эта тысяча запросов будет направлена к нему одновременно, указав это при помощи опции c.
Код:
ab -n 1000 -c 1000 http://aserver.ashep:80/test.html

Для выполнения теста с Keep-Alive-соединениями просто добавьте опцию -k.
Код:
ab -k -n 1000 -c 1000 http://aserver.ashep:80/test.html

Так можно запрашивать определенный php-сценарий, указанное количество раз, а нашем случает будет 300 раз.
Код:
ab -n 1000 -c 300 http://aserver.ashep:80/test.php

Утилита подходит как для простого, так и продвинутого тестирования:
Код:
ab -c 50 -n 10000 -f TLS1.2 -H "Accept-Encoding: gzip,deflate" https://somesite.com/
 
Последнее редактирование:
Назад
Верх Низ