Учебник. Выполнение нагрузочного теста для выявления узких мест производительности в веб-приложении
В этом руководстве описано, как определить узкие места производительности в веб-приложении с помощью нагрузочного тестирования 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.
На левой панели выберите "Тесты ", чтобы просмотреть список нагрузочных тестов
Выберите проверка box рядом с нагрузочного теста и нажмите кнопку "Изменить".
Перейдите на вкладку "Мониторинг" и нажмите кнопку "Добавить или изменить".
Выберите проверка boxes для примера приложения, развернутого ранее, и нажмите кнопку "Применить".
Совет
Фильтр группы ресурсов можно использовать для просмотра только ресурсов Azure в примере группы ресурсов приложения.
Нажмите кнопку "Применить" , чтобы сохранить изменения в конфигурации нагрузочного теста.
Вы успешно добавили компоненты приложения Azure для примера приложения в нагрузочный тест, чтобы включить мониторинг метрик на стороне сервера во время выполнения нагрузочного теста.
Запуск нагрузочного теста
Теперь можно запустить нагрузочный тест, чтобы имитировать нагрузку для примера приложения, развернутого в подписке Azure. В этом руководстве вы запустите нагрузочный тест из портал Azure. Кроме того, можно настроить рабочий процесс CI/CD для запуска нагрузочного теста.
Чтобы запустить нагрузочный тест в портал Azure, выполните следующие действия.
В портал Azure перейдите к ресурсу нагрузочного тестирования Azure.
На левой панели выберите "Тесты ", чтобы просмотреть список нагрузочных тестов
Выберите нагрузочный тест из списка, чтобы просмотреть сведения о тесте и список тестов.
Нажмите кнопку "Выполнить", а затем снова запустите нагрузочный тест.
При необходимости можно ввести описание тестового запуска.
При запуске нагрузочного теста Azure Load Testing развертывает скрипт теста JMeter и все дополнительные файлы в экземплярах тестового модуля, а затем запускает нагрузочный тест.
При запуске нагрузочного теста отобразится панель мониторинга нагрузочного теста.
Если панель мониторинга не отображается, можно выбрать "Обновить ", а затем выбрать тестовый запуск из списка.
Панель мониторинга нагрузочного теста содержит сведения о тестовом выполнении, такие как метрики на стороне клиента и метрики приложения на стороне сервера. Графики на панели мониторинга обновляются автоматически.
Можно применить несколько фильтров или объединить результаты к разным процентилям для настройки диаграмм.
Совет
Вы можете остановить нагрузочный тест в любое время из портал Azure, нажав кнопку "Остановить".
Подождите, пока нагрузочный тест завершится полностью, прежде чем перейти к следующему разделу.
Использование серверных метрик для выявления узких мест производительности
В этом разделе вы анализируете результаты нагрузочного теста, чтобы определить узкие места производительности в приложении. Проверьте метрики на стороне клиента и на стороне сервера, чтобы определить первопричину проблемы.
Сначала рассмотрим метрики на стороне клиента. Обратите внимание, что 90-й процентиль для метрики времени отклика для
get
add
запросов API выше, чем дляlasttimestamp
API.Вы можете увидеть аналогичный шаблон ошибок, где
lasttimestamp
API имеет меньше ошибок, чем другие API.Результаты
add
иget
API аналогичны, аlasttimestamp
API ведет себя по-разному. Причина может быть связана с базой данных, так какadd
get
и 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.
Выберите Save (Сохранить), чтобы сохранить изменения.
Проверка улучшений производительности
Теперь, когда вы увеличили пропускную способность базы данных, повторно запустите нагрузочный тест и убедитесь, что результаты производительности улучшены:
На панели мониторинга тестового запуска выберите "Повторно выполнить" и выберите "Повторно выполнить" на панели тестов повторного запуска.
Вы можете увидеть новую запись тестового запуска с столбцом состояния, который циклит через состояния подготовки, выполнения и готового состояния. В любое время выберите тестовый запуск, чтобы отслеживать ход выполнения нагрузочного теста.
После завершения нагрузочного теста проверка результаты времени отклика и результаты ошибок метрик на стороне клиента.
Проверьте метрики на стороне сервера для Azure Cosmos DB и убедитесь, что производительность улучшена.
Нормализованное значение потребления единиц запросов в Azure Cosmos DB теперь значительно ниже 100 %.
Теперь, когда вы обновили параметры масштабирования базы данных, вы увидите следующее:
- Время отклика
add
для API улучшилосьget
. - Нормализованное потребление единиц запросов остается в пределах предела.
В результате улучшена общая производительность приложения.
Очистка ресурсов
Важно!
Вы можете повторно использовать ресурс Нагрузочного тестирования Azure, созданный для других руководств по нагрузочному тестированию Azure и статей.
Если вы не планируете использовать какие-либо созданные ресурсы, удалите их, чтобы не нести никаких дополнительных расходов. Если вы развернули пример приложения в другой группе ресурсов, может потребоваться повторить следующие действия.
Чтобы удалить ресурсы с помощью портал Azure, выполните следующие действия.
Нажмите кнопку меню в левом верхнем углу и выберите группы ресурсов.
Выберите созданную группу ресурсов из списка.
Выберите команду Удалить группу ресурсов.
Введите имя группы ресурсов. Затем выберите Удалить.
Чтобы удалить ресурсы с помощью Azure CLI, введите следующую команду:
az group delete --name <yourresourcegroup>
Помните, что удаление группы ресурсов удаляет все ресурсы в ней.
Связанный контент
- Дополнительные сведения о диагностике неудачных тестов
- Мониторинг метрик на стороне сервера для выявления узких мест производительности в приложении
- Определение критериев сбоя нагрузочного теста для проверки результатов теста в соответствии с требованиями службы
- Дополнительные сведения о ключевых понятиях для нагрузочного тестирования Azure.