Нагрузочное тестирование с нескольких агентов
Load Testing можно использовать для тестирования сервиса с помощью нескольких агентов тестирования.
Нагрузочное тестирование с нескольких агентов применяется если:
- Цель тестирования состоит из нескольких виртуальных машин, а суммарный входящий и исходящий трафик с них превышает возможности одного агента.
- Запросы, которые направляются в цель тестирования, требуют много вычислительных мощностей.
- Цель тестирования намного эффективнее генератора нагрузки.
Агенты запускаются и подают нагрузку на цель тестирования синхронно. Результаты тестирования доступны в обобщенных и независимых отчетах с каждого агента.
Чтобы провести нагрузочное тестирование с нескольких агентов:
- Подготовьте облако к работе.
- Подготовьте инфраструктуру.
- Создайте агенты тестирования.
- Запустите тест.
- Посмотрите результаты тестирования.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
Если агент размещается на платформе Yandex Cloud, взимается плата за вычислительные ресурсы (см. тарифы Yandex Compute Cloud).
На стадии Preview использование сервиса Load Testing не тарифицируется.
Подготовьте инфраструктуру
Создайте сервисный аккаунт
- Создайте сервисный аккаунт
sa-loadtest
в каталоге, где будут размещаться агенты. - Назначьте сервисному аккаунту роль
loadtesting.generatorClient
.
Настройте сеть
Настройте NAT-шлюз в подсети, в которой будут размещаться агенты. Это обеспечит доступ агентов к сервису Load Testing.
Настройте группу безопасности
- Создайте группу безопасности для агентов
agent-sg
. - Добавьте правила:
-
Правило для исходящего HTTPS-трафика к публичному API Load Testing:
- Диапазон портов:
443
. - Протокол:
TCP
. - Назначение:
CIDR
. - CIDR блоки:
0.0.0.0/0
.
Это позволит подключить агенты к сервису Load Testing, чтобы управлять тестами из интерфейса и получать результаты тестирования.
- Диапазон портов:
-
Правило для исходящего HTTP-трафика при подаче нагрузки к цели тестирования:
- Диапазон портов:
80
. - Протокол:
TCP
. - Назначение:
CIDR
. - CIDR блоки:
0.0.0.0/0
.
Это позволит агентам подавать нагрузку к цели тестирования.
- Диапазон портов:
-
Правило для входящего SSH-трафика:
- Диапазон портов:
22
. - Протокол:
TCP
. - Назначение:
CIDR
. - CIDR блоки:
0.0.0.0/0
.
Это позволит подключаться к агентам по протоколу SSH и управлять тестами из консоли или собирать отладочную информацию.
- Диапазон портов:
-
В этом примере нагрузка будет подаваться на внешний сервис example.myservice.ru
. Подробности о настройке групп безопасности для тестирования сервисов, которые размещены внутри облака, см. в разделах:
Создайте агенты тестирования
-
Если у вас еще нет пары SSH-ключей, создайте их.
-
Создайте первый агент:
Консоль управления-
В консоли управления
выберите каталог, в котором будет создан агент. -
В списке сервисов выберите Load Testing.
-
На вкладке
Агенты нажмите Создать агент. -
Укажите имя агента, например,
agent-008
. -
Выберите зону доступности, в которой будет размещен агент.
-
В блоке Агент:
- Выберите подходящий тип агента.
- Укажите подсеть, в которой будет размещен агент. В подсети должен быть создан и настроен NAT-шлюз.
- Если вам доступны группы безопасности, выберите заранее настроенную группу безопасности агента.
-
В блоке Доступ укажите данные для доступа к агенту:
-
Выберите сервисный аккаунт
sa-loadtest
. -
В поле Логин введите имя пользователя.
Внимание
Не используйте логин
root
или другие имена, зарезервированные операционной системой. Для выполнения операций, требующих прав суперпользователя, используйте командуsudo
. -
В поле SSH-ключ вставьте содержимое файла открытого ключа.
-
-
Нажмите Создать.
-
Дождитесь завершения процесса создания ВМ. Статус агента должен смениться на
Ready for test
.Примечание
Процесс создания агента может остановиться на статусе
Initializing connection
, если не выполнены условия:- У агента есть доступ к
loadtesting.api.cloud.yandex.net:443
и публичный IP-адрес. - В целевой подсети настроен NAT-шлюз.
- У сервисного аккаунта, который назначен агенту, есть необходимые роли.
- У агента есть доступ к
-
-
Аналогично создайте второй агент с именем
agent-009
.
Если вам нужно подключиться к агентам по протоколу SSH, привяжите к ним публичный IP-адрес.
Запустите тест
- В консоли управления
выберите сервис Load Testing. - На панели слева выберите Тесты.
- Нажмите Создать тест.
- В блоке Конфигурация 1 укажите параметры тестирования для первого агента:
-
Агенты — выберите агент
agent-008
.В этом примере конфигурация теста для агентов будет разной. Чтобы задать одинаковую конфигурацию, выберите в поле Агенты все агенты, которые нужно применить.
-
В блоке Настройки теста:
- Способ настройки — выберите
Форма
. - Генератор нагрузки — выберите генератор нагрузки
Pandora
. - Адрес цели — введите адрес тестируемого сервиса:
example.myservice.ru
. - Порт цели — укажите
80
(порт для протокола HTTP по умолчанию). - Тестирующие потоки —
1000
.
Это будет означать, что генератор нагрузки сможет параллельно обрабатывать 1000 операций (создать 1000 соединений или ждать 1000 ответов от сервиса одновременно). Подробнее о тестирующих потоках.
Важно
Важно, чтобы агент имел доступ к
example.myservice.ru:80
.-
В меню Тип нагрузки:
- Выберите тип
RPS
. - Добавьте Профиль нагрузки:
- Профиль 1 —
line
. - От —
1
. - До —
100
. - Длительность —
60s
.
- Профиль 1 —
- Добавьте еще один Профиль нагрузки:
- Профиль 2 —
const
. - Ответов в секунду —
100
. - Длительность —
300s
.
- Профиль 2 —
Эти настройки дадут генератору нагрузки указание наращивать нагрузку от 1 до 100 запросов в секунду первые 60 секунд, а потом 5 минут поддерживать нагрузку 100 запросов в секунду. Подробнее о профиле нагрузки.
- Выберите тип
-
Тип запросов — укажите тип
URI
. -
В поле Прикрепленные файлы выберите Форма и в открывшемся меню:
- В меню Запросы добавьте запросы:
/ index
./test?param1=1¶m2=2 get_test
.
Запросы отмечены тегами
index
иget_test
. Генератор нагрузки будет повторять их по очереди в пределах заданного профиля нагрузки. - В меню Запросы добавьте запросы:
-
В меню Заголовки запросов добавьте заголовки:
-
[Host: example.myservice.ru]
. -
[Connection: Close]
.Обратите внимание на заголовок
Connection: Close
— каждое соединение будет закрываться после запроса. Для тестируемого сервиса и генератора нагрузки такой режим тяжелее. Если не нужно закрывать соединения, следует указать значениеKeep-Alive
.
-
-
В поле Время принудительной остановки теста укажите время, после которого сработает автостоп, если тест не будет остановлен по другим причинам. Значение параметра должно быть немного больше ожидаемой продолжительности теста.
- Способ настройки — выберите
-
- Нажмите
Дублировать конфигурацию. Параметры тестирования будут скопированы в блок Конфигурация 2. - В блоке Конфигурация 2 укажите параметры тестирования для второго агента:
-
Агенты — выберите агент
agent-009
. -
В блоке Настройки теста измените параметры тестирования.
Например, в меню Автостоп нажмите
Автостоп и введите описание:- Тип автостопа —
INSTANCES
. - Предел —
90%
. - Размер окна —
60s
.
Этот критерий остановит тест, если в течение 60 секунд будет занято 90% тестирующих потоков, что свидетельствует о возникновении проблем тестирования.
- Тип автостопа —
-
- В блоке Информация о тесте укажите имя, описание и номер версии теста. Это сделает отчеты читаемыми.
- Нажмите Создать.
После этого конфигурации пройдут проверки и агенты начнут нагружать тестируемое приложение. Отчет можно посмотреть на вкладке Тесты.
Посмотрите результаты тестирования
- В консоли управления
выберите сервис Load Testing. - На панели слева перейдите на вкладку Тесты.
- Выберите тест, созданный ранее. Тесты с несколькими агентами отображаются с меткой
Multi
. - Чтобы посмотреть обобщенные результаты, перейдите на вкладку Результаты теста.
- Чтобы посмотреть результаты тестирования по каждому агенту:
- Перейдите на вкладку Обзор.
- В блоке Тесты выберите нужный агент.
- Перейдите на вкладку Результаты теста.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы, удалите агенты тестирования.