Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве описано, как определить узкие места производительности в веб-приложении с помощью нагрузочного тестирования Azure. Вы имитируете нагрузку для примера веб-приложения Node.js, а затем используете панель мониторинга нагрузочного теста для анализа метрик на стороне клиента и сервера.
Пример приложения состоит из веб-API Node.js, который взаимодействует с базой данных NoSQL. Вы развертываете веб-API в веб-приложениях Службы приложений Azure и используете Azure Cosmos DB в качестве базы данных.
В этом руководстве вы узнаете, как:
- Разверните пример приложения.
- Создайте и запустите нагрузочный тест.
- Добавьте компоненты приложения Azure в нагрузочный тест.
- Определите узкие места производительности с помощью панели мониторинга нагрузочного теста.
Предпосылки
- Учетная запись Azure с активной подпиской. Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
- Azure CLI, установленный на локальном компьютере.
- Azure CLI версии 2.2.0 или более поздней. Запустите
az --version, чтобы найти версию, установленную на компьютере. Если вам нужно установить или обновить Azure CLI, см . инструкции по установке Azure CLI. - Visual Studio Code. Если у вас его нет, скачайте и установите его.
- Git. Если у вас его нет, скачайте и установите его.
Проверка предварительных условий
Прежде чем начать, проверьте свою среду:
Войдите в портал Azure и убедитесь, что ваша подписка активна.
Проверьте версию Azure CLI в терминале или в командном окне, выполнив команду
az --version. Сведения о последней версии см. в заметках о выпуске.Если у вас нет последней версии, обновите установку, следуя указаниям в руководстве по установке операционной системы или платформы.
Развертывание примера приложения
В этом руководстве вы создаете нагрузку на пример веб-приложения, развернутого в Службе приложений Azure. Используйте команды Azure CLI, команды Git и команды PowerShell для развертывания примера приложения в подписке Azure.
Откройте Windows PowerShell, войдите в Azure и задайте подписку:
az login az account set --subscription <your-Azure-Subscription-ID>Клонируйте исходный репозиторий примера приложения:
git clone https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.gitПример приложения — это приложение Node.js, состоящее из веб-компонента Службы приложений Azure и базы данных Azure Cosmos DB. Репозиторий включает скрипт PowerShell, который развертывает пример приложения в подписке Azure. Он также содержит скрипт Apache JMeter, который вы будете использовать в последующих шагах.
Перейдите в каталог приложения Node.js и разверните пример приложения с помощью этого скрипта PowerShell:
cd nodejs-appsvc-cosmosdb-bottleneck .\deploymentscript.ps1Подсказка
Вы можете установить PowerShell в Linux или WSL или macOS.
После установки вы можете выполнить предыдущую команду как
pwsh ./deploymentscript.ps1.В командной строке укажите:
- Идентификатор вашей подписки Azure.
- Уникальное имя веб-приложения.
- Местоположение. По умолчанию расположение —
eastus. Коды регионов можно получить, выполнив команду Get-AzLocation .
Это важно
Для имени веб-приложения используйте только строчные буквы и цифры. Не используйте пробелы или специальные символы.
После завершения развертывания перейдите к работающему примеру приложения, открыв
https://<yourappname>.azurewebsites.netв окне браузера.
Теперь, когда у вас есть пример приложения, развернутого и запущенного, можно создать ресурс нагрузочного тестирования Azure и нагрузочный тест.
Создать нагрузочный тест
В этом руководстве описано, как создать нагрузочный тест с помощью Azure CLI, отправив скрипт теста JMeter (jmx файл). Пример репозитория приложений уже содержит файл конфигурации нагрузочного теста и скрипт теста JMeter.
Чтобы создать нагрузочный тест с помощью портала Azure, выполните действия, описанные в кратком руководстве. Создайте нагрузочный тест с помощью скрипта JMeter.
Выполните следующие действия, чтобы создать ресурс нагрузочного тестирования Azure и нагрузочный тест с помощью Azure CLI:
Откройте окно терминала и введите следующую команду, чтобы войти в подписку Azure.
az loginПерейдите в пример каталога приложения.
cd nodejs-appsvc-cosmosdb-bottleneckСоздайте группу ресурсов для ресурса нагрузочного тестирования Azure.
Кроме того, можно повторно использовать группу ресурсов примера приложения, развернутого ранее.
Замените
<load-testing-resource-group-name>заполнитель текста именем группы ресурсов.resourceGroup="<load-testing-resource-group-name>" location="East US" az group create --name $resourceGroup --location $locationСоздайте ресурс нагрузочного тестирования 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Создайте нагрузочный тест для имитации нагрузки для примера приложения с
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 для примера приложения в нагрузочный тест:
Перейдите в портал Azure к вашему ресурсу нагрузочного тестирования Azure.
На левой панели выберите "Тесты ", чтобы просмотреть список нагрузочных тестов
Установите флажок рядом с нагрузочного теста и нажмите кнопку "Изменить".
Перейдите на вкладку "Мониторинг" и нажмите кнопку "Добавить или изменить".
Установите флажки для примера приложения, развернутого ранее, и нажмите кнопку "Применить".
Подсказка
Фильтр группы ресурсов можно использовать для просмотра только ресурсов Azure в примере группы ресурсов приложения.
Нажмите кнопку "Применить" , чтобы сохранить изменения в конфигурации нагрузочного теста.
Вы успешно добавили компоненты приложения Azure для примера приложения в нагрузочный тест, чтобы включить мониторинг метрик на стороне сервера во время выполнения нагрузочного теста.
Запустите нагрузочный тест
Теперь можно запустить нагрузочный тест, чтобы имитировать нагрузку для примера приложения, развернутого в подписке Azure. В этом руководстве вы запускаете нагрузочный тест на портале Azure. Кроме того, можно настроить рабочий процесс CI/CD для запуска нагрузочного теста.
Чтобы запустить нагрузочный тест на портале Azure, выполните следующие действия.
Перейдите в портал Azure к вашему ресурсу нагрузочного тестирования Azure.
На левой панели выберите "Тесты ", чтобы просмотреть список нагрузочных тестов
Выберите нагрузочный тест из списка, чтобы просмотреть сведения о тесте и список тестов.
Нажмите кнопку "Выполнить", а затем снова запустите нагрузочный тест.
При необходимости можно ввести описание тестового запуска.
При запуске нагрузочного теста Azure Load Testing развертывает скрипт теста JMeter и все дополнительные файлы в экземплярах тестового модуля, а затем запускает нагрузочный тест.
При запуске нагрузочного теста отобразится панель мониторинга нагрузочного теста.
Если панель мониторинга не отображается, можно выбрать "Обновить ", а затем выбрать тестовый запуск из списка.
Панель мониторинга нагрузочного теста содержит сведения о тестовом выполнении, такие как метрики на стороне клиента и метрики приложения на стороне сервера. Графики на панели мониторинга обновляются автоматически.
Можно применить несколько фильтров или объединить результаты к разным процентилям для настройки диаграмм.
Подсказка
Вы можете остановить нагрузочный тест в любое время на портале Azure, нажав кнопку "Остановить".
Подождите, пока нагрузочный тест завершится полностью, прежде чем перейти к следующему разделу.
Использование серверных метрик для выявления узких мест производительности
В этом разделе вы анализируете результаты нагрузочного теста, чтобы определить узкие места производительности в приложении. Проверьте метрики на стороне клиента и на стороне сервера, чтобы определить первопричину проблемы.
Сначала рассмотрим метрики на стороне клиента. Обратите внимание, что 90-й процентиль для метрики времени отклика для
addgetзапросов API выше, чем дляlasttimestampAPI.
Вы можете увидеть аналогичный шаблон ошибок, где
lasttimestampAPI имеет меньше ошибок, чем другие API.
Результаты
addиgetAPI аналогичны, аlasttimestampAPI ведет себя по-разному. Причина может быть связана с базой данных, так какaddgetи API включают доступ к базе данных.Чтобы изучить это узкое место более подробно, прокрутите вниз до раздела панели мониторинга метрик на стороне сервера .
Метрики на стороне сервера содержат подробные сведения о компонентах приложения Azure: плане службы приложений Azure, веб-приложении Службы приложений Azure и Azure Cosmos DB.
В метриках плана службы приложений Azure можно увидеть, что метрики процента ЦП и процента памяти находятся в допустимом диапазоне.
Теперь ознакомьтесь с метриками на стороне сервера Azure Cosmos DB.
Обратите внимание, что метрика потребления нормализованных единиц запросов показывает, что база данных быстро выполнялась при использовании ресурсов в 100%. Высокая загрузка ресурсов может привести к ошибкам регулирования базы данных. Кроме того, это может увеличить время отклика
addдля веб-API иgetвеб-ИНТЕРФЕЙСов.Вы также можете увидеть, что метрика подготовленной пропускной способности для экземпляра Azure Cosmos DB имеет максимальную пропускную способность в 400 единиц. Увеличение подготовленной пропускной способности базы данных может устранить проблему с производительностью.
Увеличение пропускной способности базы данных
В этом разделе вы выделяете дополнительные ресурсы для базы данных для устранения узких мест производительности.
Для Azure Cosmos DB увеличьте параметр масштабирования базы данных ЕЗ:
Перейдите к ресурсу Azure Cosmos DB, подготовленному в рамках примера развертывания приложения.
Перейдите на вкладку обозревателя данных .
Выберите "Масштаб и параметры" и обновите значение пропускной способности до 1200.
Выберите Сохранить, чтобы подтвердить изменения.
Проверка улучшений производительности
Теперь, когда вы увеличили пропускную способность базы данных, повторно запустите нагрузочный тест и убедитесь, что результаты производительности улучшены:
На панели мониторинга тестового запуска выберите "Повторно выполнить" и выберите "Повторно выполнить" на панели тестов повторного запуска .
Вы можете увидеть новую запись тестового запуска с столбцом состояния, который циклит через состояния подготовки, выполнения и готового состояния. В любое время выберите тестовый запуск, чтобы отслеживать ход выполнения нагрузочного теста.
После завершения нагрузочного теста проверьте результаты времени отклика и результаты ошибок метрик на стороне клиента.
Проверьте метрики на стороне сервера для Azure Cosmos DB и убедитесь, что производительность улучшена.
Нормализованное значение потребления единиц запросов в Azure Cosmos DB теперь значительно ниже 100%.
Теперь, когда вы обновили параметры масштабирования базы данных, вы увидите следующее:
- Время отклика
addдля API улучшилосьget. - Нормализованное потребление единиц запросов остается в пределах предела.
В результате улучшена общая производительность приложения.
Очистите ресурсы
Это важно
Вы можете повторно использовать ресурс Нагрузочного тестирования Azure, созданный для других руководств по нагрузочному тестированию Azure и статей.
Если вы не планируете использовать какие-либо созданные ресурсы, удалите их, чтобы не нести никаких дополнительных расходов. Если вы развернули пример приложения в другой группе ресурсов, может потребоваться повторить следующие действия.
Чтобы удалить ресурсы с помощью портал Azure, выполните следующие действия.
Нажмите кнопку меню в левом верхнем углу и выберите группы ресурсов.
Выберите созданную группу ресурсов из списка.
Выберите команду Удалить группу ресурсов.
Введите имя группы ресурсов. Затем выберите Удалить.
Чтобы удалить ресурсы с помощью Azure CLI, введите следующую команду:
az group delete --name <yourresourcegroup>
Помните, что удаление группы ресурсов удаляет все ресурсы в ней.
Связанный контент
- Дополнительные сведения о диагностике неудачных тестов
- Мониторинг метрик на стороне сервера для выявления узких мест производительности в приложении
- Определение критериев сбоя нагрузочного теста для проверки результатов теста в соответствии с требованиями службы
- Дополнительные сведения о ключевых понятиях для нагрузочного тестирования Azure.