Гайд - Используем ab для тестирования производительности web-приложения | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой скрипт на основе слитого?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Гайд Используем ab для тестирования производительности web-приложения

  • Автор темы Удалённый пользователь
  • Дата начала
У

Удалённый пользователь

Guest
Автор темы
Сегодня я поведаю вам о методе своеобразного ддоса с помощью apache-utils. Чтобы метод сработал сайт должен стоять на веб сервере Apache

Ну начнем)

Установка​

Для того чтобы установить ab в debian необходимо установить пакет apache2-utils:

apt-get install apache2-utils

Параметры​

Утилита запускается с помощью команды ab. Далее рассмотрим основные параметры.

  • -c — очень важный параметр. Определяет количество параллельных запросов отправляемых одновременно
  • -n — количество отправляемых запросов
  • -t — максимальное количество секунд отведенное на тест. Подходит для тестирования приложения в течении определенного временного промежутка. При этому необходимо задать большое значение параметру -n
  • -C cookie-name=value — добавляем cookie в каждый запрос к серверу
  • -H — задаем заголовок запроса
  • -T — Content-type заголовок запроса
  • -p — файл содержащий тело POST запроса
Выполнение теста

Давайте выполним тестирование какого-либо сайта и рассмотрим содержание отчета, который генерирует ab.

Код:
ab -c 10 -n 100 http://google.com/
Benchmarking google.com (be patient).....done

Server Software:        gws
Server Hostname:        google.com
Server Port:            80

Document Path:          /
Document Length:        219 bytes

Concurrency Level:      10
Time taken for tests:   1.290 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Non-2xx responses:      100
Total transferred:      54000 bytes
HTML transferred:       21900 bytes
Requests per second:    77.51 [#/sec] (mean)
Time per request:       129.018 [ms] (mean)
Time per request:       12.902 [ms] (mean, across all concurrent requests)
Transfer rate:          40.87 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       54   56   2.0     55      63
Processing:    70   72   2.4     72      82
Waiting:       70   72   2.3     72      82
Total:        124  128   3.4    127     140

Percentage of the requests served within a certain time (ms)
  50%    127
  66%    128
  75%    129
  80%    130
  90%    133
  95%    134
  98%    138
  99%    140
 100%    140 (longest request)

Сначала выводится различная информация о проводимом тесте, такая как типа серверного ПО, хост, порт, путь и тд. Дальше идут более интересные характеристики. Рассмотрим наиболее важные из них:

  • Time taken for tests — суммарное время потраченное на весь тест
  • Complete requests — количество выполненных запросов
  • Failed requests — количество запросов завершенных отказом
  • Total transferred и HTML transferred — суммарный объем и объем html переданные во время теста
  • Requests per second или rps — количество обрабатываемых запросов в секунду
  • Time per request — среднее время затраченное на запрос с и без учета распараллеливания
  • Transfer rate — скорость передачи данных при прохождении теста
Далее идет таблица с временем затраченным на подключение, обработку запроса и ожидание. И после этого таблица которая показывает процент от количества запросов, которые успели выполнится за определенный промежуток времени.



Дополнительно. Пример выполнения POST-запроса в ab​

Для выполнения POST-запроса необходимо составить тело запроса и сохранить его в файл. Для этого напишем небольшой скрипт:
Код:
 1, 'test2' => 'Second test');
$body = http_build_query($params);
file_put_contents('/tmp/body', $body);

После этого в файле /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.php
 
Активность:
Пока что здесь никого нет