Инструмент для проведения нагрузочного тестирования веб-сервисов и приложений.

Мы будем использовать Яндекс.Танк. Для этого создали шаблон в VMware Cloud Director  - «Yandex Tank». Это простой и легкий в настройке  инструмент для проведения нагрузочного тестирования и анализа производительности веб-сервисов и приложений,  при помощи которого можно генерировать десятки и сотни тысяч HTTP (HTTPS)-запросов в секунду методом GET и POST.

 Для того что бы им воспользоваться необходимо:

  1. С помощью шаблона «Yandex Tank» из публичного каталога VMware Cloud Director развернуть виртуальную машину. Для этого можно воспользоваться нашей статьей из базы знаний. Выбрав шаблон с названием «Yandex Tank». По умолчанию в  шаблоне используется 2 CPU, 1 GB RAM и 15 GB дискового пространства, под OS Ubuntu Server04. Сетевая карта виртуальной машины стоит в режиме «Ip pool», для получения адреса из выделенного пула адресов сети.
  2. Перед запуском тестирования необходимо отредактировать файл конфигурации который находится по пути /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

 

  1. После редактирования  файла конфигурации запускаем приложение  с указанием этого файла:

   yandex-tank -c /opt/yandex_tank/load.yml.

  1. Если конфигурационный файл настроен верно в консоли мы увидим вывод тестирования, по завершению которого можно понять как наш веб сервис (приложение, сайт) справляется с нагрузкой. 

На что следует обратить внимание в отчете:

                                                              

На картинке отмечены три основных поля на которые следует обратить внимание:

  1. Здесь кратко общие итоги теста: где count это общее число запросов  за тест, в нашем случае 6911, net_e это ошибки сетевого состояния которых у нас не случилось, http_e - ошибки состояния http так же 0, avg ms – среднее время потраченное на обработку запроса составляет 4,1 мс, что конечно очень хороший результат.
  2. Во втором поле мы видим подробный отчет о кодах состояний сети и запросов по протоколу http. В нашем случае мы видим, что 100% запросов http вернули код 200 - успешный запрос. Ошибок состояния сети нету, что тоже хорошо.
  3. Здесь таблица в которой мы видим, что 100% запросов по времени меньше 31 мс. Из которых например 50%  по времени меньше 3,3 мс.  

Наш тест показал очень хорошие показатели при 50 запросах линейно увеличивающихся в течении 30 секунд  до 500. Надо понимать, что увеличение количества запросов  приведет к увеличению времени обработки запроса т.к сервис не успевая обработать все запросы будет создавать очереди в которых они будут задерживаться, а иногда и вовсе отпадать по таймауту, в этом случае мы увидим в net codes код 110.

  • 37 Пользователи нашли это полезным
Помог ли вам данный ответ?

Связанные статьи

Производительность корпоративных веб-приложений в контейнерах Docker на VMware vSphere 6.5

Контейнеры Docker становятся все более популярными в качестве платформы развертывания для...