Мы будем использовать Яндекс.Танк. Для этого создали шаблон в VMware Cloud Director - «Yandex Tank». Это простой и легкий в настройке инструмент для проведения нагрузочного тестирования и анализа производительности веб-сервисов и приложений, при помощи которого можно генерировать десятки и сотни тысяч HTTP (HTTPS)-запросов в секунду методом GET и POST.
Для того что бы им воспользоваться необходимо:
- С помощью шаблона «Yandex Tank» из публичного каталога VMware Cloud Director развернуть виртуальную машину. Для этого можно воспользоваться нашей статьей из базы знаний. Выбрав шаблон с названием «Yandex Tank». По умолчанию в шаблоне используется 2 CPU, 1 GB RAM и 15 GB дискового пространства, под OS Ubuntu Server04. Сетевая карта виртуальной машины стоит в режиме «Ip pool», для получения адреса из выделенного пула адресов сети.
- Перед запуском тестирования необходимо отредактировать файл конфигурации который находится по пути /opt/yandex_tank/load.yml. Открываем его с помощью удобного вам текстового редактора, например nano /opt/yandex_tank/load.yml. Далее приведен файл конфигурации, с комментариями после символа # у пунктов которые нас интересуют:
overload:
enabled: false # включить (true) отправку на яндекс сервис, для отображения отчета в графиках
package: yandextank.plugins.DataUploader
token_file: "/opt/yandex_tank/token.txt" # расположение файла с токеном от яндекс
phantom:
address: exemple.com:443 # [адрес цели]:[порт цели]
header_http: "1.1"
ssl: false # включаем (true) если тестируем сайт с ssl защитой по https
headers: # задаем эти параметры если тестируем сайт с ssl защитой по https
- "[User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36]"
- Host:exemple.com
- Connection:close
uris: # перечисляем страницы которые необходимо тестировать
- /
load_profile:
load_type: rps # указываем метод тестирования, rps - по количеству запросов в секунду
schedule: line(1, 50, 30s) # начиная с одного обращения в секунду линейно увеличивая до 50 обращений в секунду в течение 1 минуты. Параметры теста можно изменять.
console:
enabled: true # включить вывод процесса тестирования в консоль
telegraf:
enabled: false
- После редактирования файла конфигурации запускаем приложение с указанием этого файла:
yandex-tank -c /opt/yandex_tank/load.yml.
- Если конфигурационный файл настроен верно в консоли мы увидим вывод тестирования, по завершению которого можно понять как наш веб сервис (приложение, сайт) справляется с нагрузкой.
На что следует обратить внимание в отчете:
На картинке отмечены три основных поля на которые следует обратить внимание:
- Здесь кратко общие итоги теста: где count это общее число запросов за тест, в нашем случае 6911, net_e это ошибки сетевого состояния которых у нас не случилось, http_e - ошибки состояния http так же 0, avg ms – среднее время потраченное на обработку запроса составляет 4,1 мс, что конечно очень хороший результат.
- Во втором поле мы видим подробный отчет о кодах состояний сети и запросов по протоколу http. В нашем случае мы видим, что 100% запросов http вернули код 200 - успешный запрос. Ошибок состояния сети нету, что тоже хорошо.
- Здесь таблица в которой мы видим, что 100% запросов по времени меньше 31 мс. Из которых например 50% по времени меньше 3,3 мс.
Наш тест показал очень хорошие показатели при 50 запросах линейно увеличивающихся в течении 30 секунд до 500. Надо понимать, что увеличение количества запросов приведет к увеличению времени обработки запроса т.к сервис не успевая обработать все запросы будет создавать очереди в которых они будут задерживаться, а иногда и вовсе отпадать по таймауту, в этом случае мы увидим в net codes код 110.