Как быстро оценить производительность WEB-приложения с помощью утилиты "ab"
(Apache HTTP server benchmarking tool).

Александр Ящук, Zoer, R5AM, Москва, 2019г.
На главную
  1. Установить ab:
    
        sudo apt install apache2-utils
        


  2. Проверить работу утилиты на ya.ru:
    
        ab -c 10 -n 20 ya.ru/
        
    Слеш в конце URL обязателен.


  3. Основные параметры:
    • -c — Количество параллельных запросов, отправляемых одновременно.
    • -n — Количество отправляемых запросов. Должно быть больше количества параллельных запросов.
    • -t — Количество секунд, отведенное на тест. Для тестирования WEB-приложения в течении определенного времени. Необходимо иметь запас по параметру -n .
    • -C cookie-name=value — Добавить cookie в каждый запрос к серверу.
    • -H — Задать заголовок запроса.
    • -TContent-type заголовок запроса.
    • -p file_name — Указать файл с телом POST запроса.


  4. Наиболее важные характеристики в результатах теста:
    • Time taken for tests — Суммарное время, потраченное на весь тест.
    • Complete requests — Количество выполненных запросов.
    • Failed requests — Количество запросов завершенных отказом.
    • Total transferred — Суммарный объем данных, переданных во время теста.
    • HTML transferred — Объем html трафика, переданный во время теста.
    • Requests per second — Количество обрабатываемых запросов в секунду.
    • Time per request — Два раза: 1.Среднее время затраченное на запрос с учётом распараллеливания. 2.Среднее время затраченное на запрос без учёта распараллеливания.
    • Transfer rate — Скорость передачи данных.
    • Таблица с временем, затраченным на подключение, обработку запроса и ожидание.
    • Таблица, показывающая процент запросов, укладывающихся в определенное в миллисекундах время, от общего количества запросов, которые выполнились.


  5. Примеры использования:
    • Нагрузочное тестирование — Тестирование системы при заданной нагрузке. Указать заданные значения для параметров -n и -c и запустить тест. В результате необходимо выяснить загруженность аппаратной части приложения, надёжность работы (количество отказов за заданное время).
    • Стресс-тестирование — Определение максимальной нагрузки при которой сервер остается работоспособным, а также выявление последствий нагрузки превышающей ожидаемую. В данном случае необходимо выполнить несколько итераций запуска тестов, постепенно наращивая количество параллельных запросов и количество пакетов. Данный цикл необходимо продолжать пока не начнете получать значительный для вас процент отказов или сервер совсем не ляжет. Важными в данном случае являются такие показатели, как количество запросов в секунду и время потраченное на один запрос, а также процент отказов.
    • Тестирование стабильности — Производить длительный тест (время задать при помощи параметра -t, а количество запросов -n сделать очень большим) и смотреть количество отказов системы. Полезным будет ознакомится с "разбросом" времени обработки запроса, для того чтобы выяснить не ухудшается ли производительность со временем. Данное значение можно получить из таблицы Connection Times.


  6. Выполнения POST-запроса в ab.
    Предварительно поготовить файл с телом запроса /tmp/body со следующим содержимым:
    
        test1=1&test2=Second+test
        
    Запускать тестирование:
    
        ab -T application/x-www-form-urlencoded -p /tmp/body -n 10 http://localhost/test/ab/post-handler.html
        






На главную
К началу страницы