Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Load Testing
  • Начало работы
    • Все практические руководства
    • Нагрузочное тестирование gRPC-сервиса
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
    • HTTP-тест с нагрузкой по сценарию с помощью Pandora
    • Нагрузочный тест с помощью JMeter
    • Нагрузочное тестирование с нескольких агентов
    • Миграция результатов нагрузочного тестирования из OverLoad
    • Запуск внешних агентов для нагрузочного тестирования
    • Вызов нагрузочного тестирования из GitLab CI
    • Сравнение результатов нагрузочных тестов
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Создайте сервисный аккаунт
  • Настройте сеть
  • Настройте группы безопасности
  • Подготовьте цель тестирования
  • Создайте агент тестирования
  • Подготовьте файл с тестовыми данными
  • Запустите тест
  • Перезапустите тест
  • Сравните результаты
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Сравнение результатов нагрузочных тестов

Сравнение результатов нагрузочных тестов

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
    • Создайте сервисный аккаунт
    • Настройте сеть
    • Настройте группы безопасности
  • Подготовьте цель тестирования
  • Создайте агент тестирования
  • Подготовьте файл с тестовыми данными
  • Запустите тест
  • Перезапустите тест
  • Сравните результаты
  • Как удалить созданные ресурсы

В данном сценарии вы настроите окружение для нагрузочного тестирования, проведете тесты и сравните результаты нагрузочных тестов.

В сценарии используется генератор нагрузки Pandora и простейший веб-сервис в качестве цели тестирования.

Чтобы провести нагрузочное тестирование и сравнить результаты тестов:

  1. Подготовьте облако к работе.
  2. Подготовьте инфраструктуру.
  3. Подготовьте цель тестирования.
  4. Создайте агент.
  5. Подготовьте файл с тестовыми данными.
  6. Запустите тест.
  7. Перезапустите тест несколько раз.
  8. Сравните результаты.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

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

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

Если агент размещается на платформе Yandex Cloud, взимается плата за вычислительные ресурсы (см. тарифы Yandex Compute Cloud).

На стадии Preview использование сервиса Load Testing не тарифицируется.

Подготовьте инфраструктуруПодготовьте инфраструктуру

Создайте сервисный аккаунтСоздайте сервисный аккаунт

  1. Создайте сервисный аккаунт sa-loadtest в каталоге, где будет размещаться агент, с которого будет подаваться нагрузка.
  2. Назначьте сервисному аккаунту роль loadtesting.generatorClient.

Настройте сетьНастройте сеть

Создайте и настройте NAT-шлюз в подсети, где будет размещаться цель тестирования и будет размещен агент. Это обеспечит доступ агента к сервису Load Testing.

Настройте группы безопасностиНастройте группы безопасности

  1. Настройте группу безопасности агента тестирования:

    1. Создайте группу безопасности агента agent-sg.
    2. Добавьте правила:
      1. Правило для исходящего HTTPS-трафика к публичному API Load Testing:

        • Диапазон портов: 443.
        • Протокол: TCP.
        • Назначение: CIDR.
        • CIDR блоки: 0.0.0.0/0.

        Это позволит подключить агент к сервису Load Testing, чтобы управлять тестами из интерфейса и получать результаты тестирования.

      2. Правило для входящего SSH-трафика:

        • Диапазон портов: 22.
        • Протокол: TCP.
        • Назначение: CIDR.
        • CIDR блоки: 0.0.0.0/0.

        Это позволит подключаться к агенту по протоколу SSH и управлять тестами из консоли или собирать отладочную информацию.

      3. Правило для исходящего трафика при подаче нагрузки к цели тестирования:

        • Диапазон портов: 0-65535.
        • Протокол: Любой.
        • Назначение: Группа безопасности.
          Выберите Из списка. Укажите группу безопасности, в которой находится нужная цель тестирования.

        Создайте такое правило для каждой цели тестирования с уникальной группой безопасности.

  2. Настройте группу безопасности цели тестирования:

    1. Создайте группу безопасности цели тестирования load-target-sg.

    2. Добавьте правило для входящего трафика при подаче нагрузки к цели тестирования:

      • Диапазон портов: 0-65535.
      • Протокол: Любой.
      • Назначение: Группа безопасности.
        Выберите Из списка. Укажите группу безопасности, в которой находится нужная цель тестирования.

      Это правило позволит агентам подавать нагрузку на эту цель или подключать дополнительные средства мониторинга.

Подготовьте цель тестированияПодготовьте цель тестирования

Чтобы подготовить цель тестирования:

  1. Создайте ВМ из публичного образа Linux:

    1. В качестве имени задайте load-target.
    2. В качестве логина укажите, например, ycuser.
    3. Укажите группу безопасности load-target-sg в блоке сетевых настроек.
  2. Подключитесь к ВМ по SSH, выполнив команду:

    ssh ycuser@<публичный_IP-адрес_ВМ>
    
  3. Создайте файл веб-сервиса, выполнив:

    mkdir app
    cd app
    nano app.py
    
  4. Скопируйте в файл веб-сервиса следующий код:

    from flask import Flask, make_response
    from flask_cors import CORS
    import os
    
    app = Flask(__name__)
    CORS(app)
    
    @app.route('/')
    def index():
    	 res = make_response({"message":"Root URL"}, status_code=200)
    	 return res
    
    @app.route('/test')
    def get_test():
    	 res = make_response({"message":"Get test URL"}, status_code=200)
    	 return res
    
    # Run application
    if __name__ == '__main__':
    	 app.run(host='0.0.0.0', debug=False, port=443)	
    
  5. Установите необходимые пакеты:

    pip install flask flask-cors
    
  6. Запустите сервис:

    python3 app.py
    

    Сервис будет ожидать запросы на порт 443. Убедитесь что порт открыт и сконфигурирован для HTTPS-запросов.

Создайте агент тестированияСоздайте агент тестирования

Смотреть видео на YouTube.

  1. Если у вас еще нет пары SSH-ключей, создайте их.

  2. Создайте агент:

    Консоль управления
    CLI
    1. В консоли управления выберите каталог, в котором будет создан агент.

    2. В списке сервисов выберите Load Testing.

    3. На вкладке Агенты нажмите кнопку Создать агент.

    4. Укажите имя агента, например agent-008.

    5. Укажите ту же зону доступности, в которой находится цель тестирования.

    6. В блоке Агент:

      • Выберите подходящий тип агента. Подробнее см. в разделе Производительность агентов.
      • Укажите подсеть, в которой находится цель тестирования. В подсети должен быть создан и настроен NAT-шлюз.
      • Если вам доступны группы безопасности, выберите заранее настроенную группу безопасности агента.
    7. В блоке Доступ укажите данные для доступа к агенту:

      • Выберите сервисный аккаунт sa-loadtest.

      • В поле Логин введите имя пользователя.

        Внимание

        Не используйте логин root или другие имена, зарезервированные операционной системой. Для выполнения операций, требующих прав суперпользователя, используйте команду sudo.

      • В поле SSH-ключ вставьте содержимое файла открытого ключа.

    8. Нажмите Создать.

    9. Дождитесь завершения процесса создания виртуальной машины. Статус агента должен смениться на Ready for test.

      Примечание

      Если процесс создания агента остановился на статусе Initializing connection, проверьте выполнение условий:

      • У агента есть доступ к loadtesting.api.cloud.yandex.net:443 и публичный IP-адрес.
      • В целевой подсети настроен NAT-шлюз.
      • У сервисного аккаунта, который назначен агенту, есть необходимые роли.

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

    1. Посмотрите описание команды CLI для создания агента:

      yc loadtesting agent create --help
      
    2. Выберите ту же зону доступности, в которой находится цель тестирования.

    3. Выберите подсеть, в которой находится цель тестирования. В подсети должен быть создан и настроен NAT-шлюз.

      Чтобы получить список доступных подсетей с помощью CLI, выполните следующую команду:

      yc vpc subnet list
      

      Результат:

      +----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+
      |          ID          |           NAME            |      NETWORK ID      | ROUTE TABLE ID |       ZONE        |      RANGE      |
      +----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+
      | e2lfkhps7bol******** |   default-ru-central1-b   | enpnf7hajqmd******** |                |   ru-central1-b   | [10.129.0.0/24] |
      | e9bgnq1bggfa******** |   default-ru-central1-a   | enpnf7hajqmd******** |                |   ru-central1-a   | [10.128.0.0/24] |
      | fl841n5ilklr******** |   default-ru-central1-d   | enpnf7hajqmd******** |                |   ru-central1-d   | [10.130.0.0/24] |
      +----------------------+---------------------------+----------------------+----------------+-------------------+-----------------+
      
    4. Выберите группу безопасности. Группа безопасности должна быть заранее настроена.

      Чтобы получить список доступных групп безопасности с помощью CLI, выполните следующую команду:

      yc vpc security-group list
      

      Результат:

      +----------------------+---------------------------------+--------------------------------+----------------------+
      |          ID          |              NAME               |          DESCRIPTION           |      NETWORK-ID      |
      +----------------------+---------------------------------+--------------------------------+----------------------+
      | enp414a2tnnp******** | default-sg-enpnf7hajqmd******** | Default security group for     | enpnf7hajqmd******** |
      |                      |                                 | network                        |                      |
      | enpctpve7951******** | sg-load-testing-agents          |                                | enpnf7hajqmd******** |
      | enpufo9ms0gi******** | sg-load-testing-targets         |                                | enpnf7hajqmd******** |
      +----------------------+---------------------------------+--------------------------------+----------------------+
      
    5. Узнайте идентификатор сервисного аккаунта sa-loadtest по его имени:

      yc iam service-account get sa-loadtest
      

      Результат:

      id: ajespasg04oc********
      folder_id: b1g85uk96h3f********
      created_at: "2024-12-04T17:38:57Z"
      name: sa-loadtest
      last_authenticated_at: "2024-12-12T19:10:00Z"
      
    6. Создайте агента в каталоге по умолчанию:

      yc loadtesting agent create \
        --name agent-008 \
        --labels origin=default,label-key=label-value \
        --zone default-ru-central1-a \
        --network-interface subnet-id=e9bgnq1bggfa********,security-group-ids=enpctpve7951******** \
        --cores 2 \
        --memory 2G \
        --service-account-id ajespasg04oc********
        --metadata-from-file user-data=metadata.yaml
      

      Где:

      • --name — имя агента.
      • --labels — метки агента.
      • --zone — зона доступности, в которой будет размещен агент.
      • --network-interface — настройки сетевого интерфейса агента:
        • subnet-name — идентификатор выбранной подсети.
        • security-group-ids — идентификаторы групп безопасности.
      • --cores — сколько ядер процессора может задействовать агент.
      • --memory — сколько памяти отведено агенту.
      • --service-account-id — идентификатор сервисного аккаунта.
      • --metadata-from-file — пара <ключ>=<значение> с именем файла, содержащим путь к публичному SSH-ключу. Пример содержимого файла конфигурации metadata.yaml можно посмотреть в разделе Метаданные виртуальной машины.

      Подробнее о создании агента с помощью CLI см. в репозитории Yandex Cloud Examples.

  3. Привяжите публичный IP-адрес к агенту для доступа по протоколу SSH:

    Консоль управления
    CLI
    1. В консоли управления выберите каталог, в котором размещен агент.
    2. Выберите сервис Compute Cloud.
    3. Выберите ВМ с именем agent-008.
    4. В блоке Сетевой интерфейс в правом верхнем углу нажмите и выберите Добавить публичный IP-адрес.
    5. В открывшемся окне:
      • В поле Публичный адрес выберите получение адреса Автоматически.
      • Нажмите Добавить.

    Чтобы привязать к агенту публичный IP-адрес выполните команду CLI:

    yc compute instance add-one-to-one-nat \
      --id=<идентификатор_ВМ> \
      --network-interface-index=<номер_сетевого_интерфейса_ВМ> \
      --nat-address=<IP-адрес>
    

    Где:

    • --id — идентификатор ВМ. Получите список идентификаторов ВМ, доступных в каталоге, с помощью команды CLI yc compute instance list.

    • --network-interface-index — номер сетевого интерфейса ВМ. По умолчанию — 0. Чтобы получить список сетевых интерфейсов ВМ и их номера, выполните команду yc compute instance get <идентификатор_ВМ>.

    • --nat-address — публичный IP-адрес, который нужно присвоить ВМ. Необязательный параметр. Если параметр --nat-address не задан, публичный IP-адрес будет присвоен ВМ автоматически.

      Получите список зарезервированных публичных IP-адресов, доступных в каталоге, с помощью команды CLI yc vpc address list. IP-адрес и ВМ должны находиться в одной зоне доступности.

    Пример использования:

    yc compute instance add-one-to-one-nat \
      --id=fhmsbag62taf******** \
      --network-interface-index=0 \
      --nat-address=51.250.*.***
    

    Результат:

    id: fhmsbag62taf********
    folder_id: b1gv87ssvu49********
    created_at: "2022-05-06T10:41:56Z"
    ...
    network_settings:
      type: STANDARD
    placement_policy: {}
    

    Подробнее о команде yc compute instance add-one-to-one-nat см. в справочнике CLI.

Подготовьте файл с тестовыми даннымиПодготовьте файл с тестовыми данными

  1. Сформируйте тестовые данные в формате URI:

    [Host: <внутренний_IP-адрес_цели_тестирования>]
    [Connection: Close]
    / index
    /test?param1=1&param2=2 get_test
    

    Обратите внимание на заголовок Connection: Close — каждое соединение будет закрываться после запроса. Для приложения и генератора нагрузки такой режим тяжелее. Если не нужно закрывать соединения, следует указать значение Keep-Alive.

    Также указаны два запроса, отмеченные тегами index и get_test. Генератор будет повторять их по очереди в пределах заданного профиля нагрузки.

  2. Сохраните тестовые данные в файл data.uri.

Запустите тестЗапустите тест

  1. В консоли управления выберите сервис Load Testing.

  2. На панели слева выберите Тесты. Нажмите Создать тест.

  3. В параметре Агенты выберите агент agent-008.

  4. В блоке Прикрепленные файлы нажмите Выбрать файлы и выберите сохраненный ранее файл data.uri.

  5. В блоке Настройки теста выберите способ настройки: Форма или Конфигурационный файл.

  6. В зависимости от выбранного способа задайте параметры теста:

    Форма
    Конфигурационный файл
    1. В поле Генератор нагрузки выберите PANDORA.

    2. В поле Адрес цели укажите внутренний IP-адрес тестируемого сервиса.

    3. В поле Порт цели укажите 443 (порт для HTTPS по умолчанию). Разрешите использовать защищенное соединение.

    4. В поле Тестирующие потоки укажите значение 5000.

      Это означает, что генератор нагрузки сможет параллельно обрабатывать 5000 операций: создать 5000 соединений или ждать 5000 ответов от сервиса одновременно.

      Совет

      Для большинства тестов хватит 1000–10 000 потоков.

      Использование большего количества тестирующих потоков задействует больше ресурсов виртуальной машины, на которой запущен агент. Также существует ограничение Compute Cloud на 50 000 одновременных соединений с ВМ.

    5. В меню Тип нагрузки выберите RPS.

    6. Нажмите Профиль нагрузки и введите описание:

      • Профиль 1 — step.
      • От — 1000.
      • До — 5000.
      • Шаг — 1000.
      • Длительность — 120s.

      Это указание генератору наращивать нагрузку от 1000 до 5000 запросов в секунду с шагом в 1000 запросов, с длительностью каждого шага 120 секунд.

    7. В поле Тип запросов выберите URI.

    8. В поле Прикрепленные файлы выберите Прикрепленный файл.

    9. В меню Автостоп нажмите Автостоп и введите описание:

      • Тип автостопа 1 — QUANTILE.
      • Квантиль — 75.
      • Лимит времени ответов — 100ms.
      • Размер окна — 10s.

      Этот критерий остановит тест, если в течение 10 секунд 75 процентиль превысит 100 миллисекунд (в течение 10 секунд время обработки 25% запросов превысит 100 миллисекунд).

    10. Укажите еще один автостоп:

      • Тип автостопа 2 — INSTANCES.
      • Предел — 90%.
      • Размер окна — 60s.

      Этот критерий остановит тест, если в течение 60 секунд будет занято 90% тестирующих потоков.

      При увеличении нагрузки ожидается, что в какой-то момент тестируемая система начнет деградировать. Дальнейшее повышение нагрузки приведет к увеличению времени ответа или росту количества ошибок. Чтобы избежать существенного увеличения времени тестирования, обязательно выставляйте в таких тестах критерий завершения — Автостоп.

    11. В поле Время принудительной остановки теста укажите время, после которого сработает автостоп, если тест не будет остановлен по другим причинам. Значение параметра должно быть немного больше ожидаемой продолжительности теста.

    12. В блоке Информация о тесте укажите имя, описание и номер тестируемой версии. Это поможет сделать отчет читаемым.

    1. В поле для ввода конфигурации введите настройки тестирующих потоков в формате yaml:

      pandora:
         enabled: true
         package: yandextank.plugins.Pandora
         config_content:
         pools:
            - id: HTTP
               gun:
               type: http # Протокол.
               target: <внутренний_IP-адрес_цели_тестирования>:443 
               ssl: true
               ammo:
               type: uri
               file: data.uri
               result:
               type: phout
               destination: ./phout.log
               rps:
               - duration: 120s # Время теста.
                  type: step # Тип нагрузки.
                  from: 1000
                  to: 5000
                  step: 1000
               startup:
               type: once
               times: 5000 # Количество тестирующих потоков.
         log:
            level: error
         monitoring:
            expvar:
               enabled: true
               port: 1234
      autostop: # Автостоп.
         enabled: true
         package: yandextank.plugins.Autostop
         autostop:
         - limit (5m) # Обязательно укажите предельное время работы теста.
         - quantile(75,100ms,10s) # Завершение теста, если в течение 10 секунд 75 процентиль
                                    # превысит 100 миллисекунд (в течение 10 секунд время
                                    # обработки 25% запросов превысит 100 миллисекунд).
         - instances(90%,60s)  # Завершение теста, если в течение 60 секунд будет занято
                                 # 90% тестирующих потоков.
      core: {}
      uploader:
         enabled: true
         package: yandextank.plugins.DataUploader
         job_name: '[example][pandora][step]'
         job_dsc: 'example'
         ver: '0.5.5'
         api_address: loadtesting.api.cloud.yandex.net:443
      

      При увеличении нагрузки ожидается, что в какой-то момент тестируемая система начнет деградировать. Дальнейшее повышение нагрузки приведет к увеличению времени ответа или росту количества ошибок. Чтобы избежать существенного увеличения времени тестирования, обязательно выставляйте в таких тестах критерий завершения — Автостоп.

      Совет

      Посмотрите пример файла конфигурации. Также пример файла конфигурации можно посмотреть в уже имеющихся тестах.

  7. Нажмите Создать.

После этого конфигурация пройдет проверки, и агент начнет нагружать тестируемый сервис.

Перезапустите тестПерезапустите тест

  1. По завершении теста справа вверху нажмите кнопку Перезапустить.
  2. На открывшейся странице создания теста загрузите тот же файл data.uri, который использовали при создании теста.
  3. Нажмите Создать.

Повторите эти действия несколько раз, чтобы получить несколько завершенных тестов.

Сравните результатыСравните результаты

Смотреть видео на YouTube.

Чтобы сравнить результаты:

  1. На панели слева выберите Тесты и в таблице тестов выберите завершенные тесты, которые нужно сравнить.
  2. Внизу на всплывающей панели нажмите Добавить к сравнению.
  3. На панели слева выберите Сравнение и просмотрите совмещенные графики результатов нагрузочных тестов.
  4. Для сравнения результатов по конкретному запросу (например, по запросу get_test), выберите нужный запрос в выпадающем списке Case вверху страницы.
  5. Сравнение результатов в табличном виде можно посмотреть на странице Таблицы.

Как удалить созданные ресурсыКак удалить созданные ресурсы

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:

  1. Удалите агент.
  2. Удалите таблицу маршрутизации.
  3. Удалите NAT-шлюз.

Была ли статья полезна?

Предыдущая
Вызов нагрузочного тестирования из GitLab CI
Следующая
Обзор сервиса
Проект Яндекса
© 2025 ООО «Яндекс.Облако»