Поделиться через


Руководство. Запуск нагрузочного теста для выявления узких мест производительности в веб-приложении

В этом руководстве описано, как определить узкие места производительности в веб-приложении с помощью нагрузочного тестирования Azure. Вы имитируете нагрузку для примера веб-приложения Node.js, а затем используете панель мониторинга нагрузочного теста для анализа метрик на стороне клиента и сервера.

Пример приложения состоит из веб-API Node.js, который взаимодействует с базой данных NoSQL. Вы развертываете веб-API в веб-приложениях Службы приложений Azure и используете Azure Cosmos DB в качестве базы данных.

В этом руководстве вы узнаете, как:

  • Разверните пример приложения.
  • Создайте и запустите нагрузочный тест.
  • Добавьте компоненты приложения Azure в нагрузочный тест.
  • Определите узкие места производительности с помощью панели мониторинга нагрузочного теста.

Предпосылки

Проверка предварительных условий

Прежде чем начать, проверьте свою среду:

Развертывание примера приложения

В этом руководстве вы создаете нагрузку на пример веб-приложения, развернутого в Службе приложений Azure. Используйте команды Azure CLI, команды Git и команды PowerShell для развертывания примера приложения в подписке Azure.

  1. Откройте Windows PowerShell, войдите в Azure и задайте подписку:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. Клонируйте исходный репозиторий примера приложения:

    git clone https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.git
    

    Пример приложения — это приложение Node.js, состоящее из веб-компонента Службы приложений Azure и базы данных Azure Cosmos DB. Репозиторий включает скрипт PowerShell, который развертывает пример приложения в подписке Azure. Он также содержит скрипт Apache JMeter, который вы будете использовать в последующих шагах.

  3. Перейдите в каталог приложения Node.js и разверните пример приложения с помощью этого скрипта PowerShell:

    cd nodejs-appsvc-cosmosdb-bottleneck
    .\deploymentscript.ps1
    

    Подсказка

    Вы можете установить PowerShell в Linux или WSL или macOS.

    После установки вы можете выполнить предыдущую команду как pwsh ./deploymentscript.ps1.

  4. В командной строке укажите:

    • Идентификатор вашей подписки Azure.
    • Уникальное имя веб-приложения.
    • Местоположение. По умолчанию расположение — eastus. Коды регионов можно получить, выполнив команду Get-AzLocation .

    Это важно

    Для имени веб-приложения используйте только строчные буквы и цифры. Не используйте пробелы или специальные символы.

  5. После завершения развертывания перейдите к работающему примеру приложения, открыв https://<yourappname>.azurewebsites.net в окне браузера.

Теперь, когда у вас есть пример приложения, развернутого и запущенного, можно создать ресурс нагрузочного тестирования Azure и нагрузочный тест.

Создать нагрузочный тест

В этом руководстве описано, как создать нагрузочный тест с помощью Azure CLI, отправив скрипт теста JMeter (jmx файл). Пример репозитория приложений уже содержит файл конфигурации нагрузочного теста и скрипт теста JMeter.

Чтобы создать нагрузочный тест с помощью портала Azure, выполните действия, описанные в кратком руководстве. Создайте нагрузочный тест с помощью скрипта JMeter.

Выполните следующие действия, чтобы создать ресурс нагрузочного тестирования Azure и нагрузочный тест с помощью Azure CLI:

  1. Откройте окно терминала и введите следующую команду, чтобы войти в подписку Azure.

    az login
    
  2. Перейдите в пример каталога приложения.

    cd nodejs-appsvc-cosmosdb-bottleneck
    
  3. Создайте группу ресурсов для ресурса нагрузочного тестирования Azure.

    Кроме того, можно повторно использовать группу ресурсов примера приложения, развернутого ранее.

    Замените <load-testing-resource-group-name> заполнитель текста именем группы ресурсов.

    resourceGroup="<load-testing-resource-group-name>"
    location="East US"
    
    az group create --name $resourceGroup --location $location
    
  4. Создайте ресурс нагрузочного тестирования Azure с az load create помощью команды.

    Замените <load-testing-resource-name> заполнитель текста именем ресурса нагрузочного тестирования.

    # This script requires the following Azure CLI extensions:
    # - load
    
    loadTestResource="<load-testing-resource-name>"
    
    az load create --name $loadTestResource --resource-group $resourceGroup --location $location
    
  5. Создайте нагрузочный тест для имитации нагрузки для примера приложения с az load test create помощью команды.

    Замените <web-app-hostname> заполнитель текста именем узла службы приложений примера приложения. Это значение имеет форму myapp.azurewebsites.net. Не включайте https:// часть URL-адреса.

    testId="sample-app-test"
    webappHostname="<web-app-hostname>"
    
    az load test create --test-id $testId --load-test-resource $loadTestResource --resource-group $resourceGroup --load-test-config-file SampleApp.yaml --env webapp=$webappHostname
    

    Эта команда использует файл конфигурации нагрузочного теста, который ссылается Sampleapp.yaml на SampleApp.jmx скрипт тестирования JMeter. Для передачи примера имени узла приложения в нагрузочный тест используется параметр командной строки.

Теперь у вас есть ресурс нагрузочного тестирования Azure и нагрузочный тест для создания нагрузки для примера веб-приложения в подписке Azure.

Добавление компонентов приложения Azure для мониторинга приложения

Нагрузочное тестирование Azure позволяет отслеживать метрики ресурсов для компонентов Azure приложения. Анализируя эти серверные метрики, вы можете определить проблемы производительности и стабильности в приложении непосредственно на панели мониторинга Нагрузочного тестирования Azure.

В этом руководстве вы добавите компоненты Azure для примера приложения, развернутого в Azure, например службу приложений, учетную запись Cosmos DB и многое другое.

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

  1. Перейдите в портал Azure к вашему ресурсу нагрузочного тестирования Azure.

  2. На левой панели выберите "Тесты ", чтобы просмотреть список нагрузочных тестов

  3. Установите флажок рядом с нагрузочного теста и нажмите кнопку "Изменить".

    Снимок экрана: список нагрузочных тестов на портале Azure, в котором показано, как выбрать тест из списка и кнопку

  4. Перейдите на вкладку "Мониторинг" и нажмите кнопку "Добавить или изменить".

  5. Установите флажки для примера приложения, развернутого ранее, и нажмите кнопку "Применить".

    Снимок экрана: добавление компонентов приложения в нагрузочный тест на портале Azure.

    Подсказка

    Фильтр группы ресурсов можно использовать для просмотра только ресурсов Azure в примере группы ресурсов приложения.

  6. Нажмите кнопку "Применить" , чтобы сохранить изменения в конфигурации нагрузочного теста.

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

Запустите нагрузочный тест

Теперь можно запустить нагрузочный тест, чтобы имитировать нагрузку для примера приложения, развернутого в подписке Azure. В этом руководстве вы запускаете нагрузочный тест на портале Azure. Кроме того, можно настроить рабочий процесс CI/CD для запуска нагрузочного теста.

Чтобы запустить нагрузочный тест на портале Azure, выполните следующие действия.

  1. Перейдите в портал Azure к вашему ресурсу нагрузочного тестирования Azure.

  2. На левой панели выберите "Тесты ", чтобы просмотреть список нагрузочных тестов

  3. Выберите нагрузочный тест из списка, чтобы просмотреть сведения о тесте и список тестов.

  4. Нажмите кнопку "Выполнить", а затем снова запустите нагрузочный тест.

    При необходимости можно ввести описание тестового запуска.

    Снимок экрана: запуск нагрузочного теста на портале Azure.

    При запуске нагрузочного теста Azure Load Testing развертывает скрипт теста JMeter и все дополнительные файлы в экземплярах тестового модуля, а затем запускает нагрузочный тест.

  5. При запуске нагрузочного теста отобразится панель мониторинга нагрузочного теста.

    Если панель мониторинга не отображается, можно выбрать "Обновить ", а затем выбрать тестовый запуск из списка.

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

    Снимок экрана: графики метрик на стороне клиента на панели мониторинга нагрузочного теста на портале Azure.

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

    Подсказка

    Вы можете остановить нагрузочный тест в любое время на портале Azure, нажав кнопку "Остановить".

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

Использование серверных метрик для выявления узких мест производительности

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

  1. Сначала рассмотрим метрики на стороне клиента. Обратите внимание, что 90-й процентиль для метрики времени отклика для addget запросов API выше, чем для lasttimestamp API.

    Снимок экрана: метрики на стороне клиента.

    Вы можете увидеть аналогичный шаблон ошибок, где lasttimestamp API имеет меньше ошибок, чем другие API.

    Снимок экрана: диаграмма ошибок.

    Результаты add и get API аналогичны, а lasttimestamp API ведет себя по-разному. Причина может быть связана с базой данных, так как addget и API включают доступ к базе данных.

  2. Чтобы изучить это узкое место более подробно, прокрутите вниз до раздела панели мониторинга метрик на стороне сервера .

    Метрики на стороне сервера содержат подробные сведения о компонентах приложения Azure: плане службы приложений Azure, веб-приложении Службы приложений Azure и Azure Cosmos DB.

    Снимок экрана: метрики плана службы приложений Azure.

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

  3. Теперь ознакомьтесь с метриками на стороне сервера Azure Cosmos DB.

    Снимок экрана: метрики Azure Cosmos DB.

    Обратите внимание, что метрика потребления нормализованных единиц запросов показывает, что база данных быстро выполнялась при использовании ресурсов в 100%. Высокая загрузка ресурсов может привести к ошибкам регулирования базы данных. Кроме того, это может увеличить время отклика add для веб-API и get веб-ИНТЕРФЕЙСов.

    Вы также можете увидеть, что метрика подготовленной пропускной способности для экземпляра Azure Cosmos DB имеет максимальную пропускную способность в 400 единиц. Увеличение подготовленной пропускной способности базы данных может устранить проблему с производительностью.

Увеличение пропускной способности базы данных

В этом разделе вы выделяете дополнительные ресурсы для базы данных для устранения узких мест производительности.

Для Azure Cosmos DB увеличьте параметр масштабирования базы данных ЕЗ:

  1. Перейдите к ресурсу Azure Cosmos DB, подготовленному в рамках примера развертывания приложения.

  2. Перейдите на вкладку обозревателя данных .

    Снимок экрана, на котором показана вкладка

  3. Выберите "Масштаб и параметры" и обновите значение пропускной способности до 1200.

    Снимок экрана: обновленные параметры масштабирования Azure Cosmos DB.

  4. Выберите Сохранить, чтобы подтвердить изменения.

Проверка улучшений производительности

Теперь, когда вы увеличили пропускную способность базы данных, повторно запустите нагрузочный тест и убедитесь, что результаты производительности улучшены:

  1. На панели мониторинга тестового запуска выберите "Повторно выполнить" и выберите "Повторно выполнить" на панели тестов повторного запуска .

    Снимок экрана: выбор для запуска нагрузочного теста.

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

  2. После завершения нагрузочного теста проверьте результаты времени отклика и результаты ошибок метрик на стороне клиента.

  3. Проверьте метрики на стороне сервера для Azure Cosmos DB и убедитесь, что производительность улучшена.

    Снимок экрана: метрики на стороне клиента Azure Cosmos DB после обновления параметров масштабирования.

    Нормализованное значение потребления единиц запросов в Azure Cosmos DB теперь значительно ниже 100%.

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

  • Время отклика add для API улучшилось get .
  • Нормализованное потребление единиц запросов остается в пределах предела.

В результате улучшена общая производительность приложения.

Очистите ресурсы

Это важно

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

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

Чтобы удалить ресурсы с помощью портал Azure, выполните следующие действия.

  1. Нажмите кнопку меню в левом верхнем углу и выберите группы ресурсов.

  2. Выберите созданную группу ресурсов из списка.

  3. Выберите команду Удалить группу ресурсов. Снимок экрана: выбор для удаления группы ресурсов на портале Azure.

  4. Введите имя группы ресурсов. Затем выберите Удалить.

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

az group delete --name <yourresourcegroup>

Помните, что удаление группы ресурсов удаляет все ресурсы в ней.