Устранение причин низкой производительности приложения в Службе приложений Azure

Сводка

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

Симптомы

При просмотре приложения страницы загружают медленно и иногда истекает время ожидания.

Причина

Эта проблема часто возникает из-за проблем на уровне приложения, таких как:

  • Сетевые запросы занимает много времени
  • Код приложения или запросы к базе данных неэффективны
  • Приложение использует высокую память или ЦП
  • Приложение завершается сбоем из-за исключения

Действия по устранению неполадок

Устранение неполадок включает три отдельные задачи, выполняемые в последовательности:

  1. Наблюдение за поведением приложения.
  2. Сбор данных.
  3. Устранение проблемы.

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

Наблюдение и мониторинг поведения приложения

Отслеживание работоспособности службы

Azure предоставляет доступ к каждому прерыванию службы или снижению производительности. Вы можете отслеживать работоспособность службы на портале Azure. Дополнительные сведения см. в разделе "Просмотр уведомлений о работоспособности службы" на портале Azure.

Отслеживание работы приложения

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

Некоторые метрики, которые могут потребоваться отслеживать для приложения, включают:

  • средний размер рабочего набора памяти;
  • Время ЦП
  • Рабочий набор памяти
  • Запросы
  • Время ответа

Снимок экрана: раздел метрик в разделе

Дополнительные сведения можно найти здесь

Мониторинг производительности приложений с помощью расширений

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

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

Также доступно расширение сайта для мониторинга производительности Azure Application Insights. Чтобы использовать Application Insights, перестройте код с помощью пакета SDK. Кроме того, вы можете установить расширение, которое предоставляет доступ к дополнительным данным. Пакет SDK позволяет писать код для более подробного отслеживания использования и производительности приложения. Дополнительные сведения см. в статье "Введение в Application Insights — Наблюдаемость OpenTelemetry".

Сбор данных

Службы приложений включают функции диагностики для записи в журнал информации как с веб-сервера, так и из веб-приложения. Информация разделена следующим образом: диагностика веб-сервера и диагностика приложений.

Включение диагностики веб-сервера

Вы можете включить или отключить такие виды журналов:

  • Подробное ведение журнала ошибок: подробные сведения об ошибках для кодов состояния HTTP, которые указывают на сбой (код состояния 400 или больше). Этот журнал может содержать сведения, которые помогут определить, почему сервер вернул код ошибки.
  • Трассировка неудачных запросов: подробные сведения о неудачных запросах, включая трассировку компонентов IIS, используемых для обработки запроса и времени, затраченного на каждый компонент. Эти сведения могут быть полезны, если вы пытаетесь повысить производительность приложения или изолировать то, что вызывает определенную ошибку HTTP.
  • Ведение журнала веб-сервера: сведения о http-транзакциях с использованием формата расширенного файла журнала W3C. Этот журнал полезен при определении общих метрик приложения, таких как количество обрабатываемых запросов или количество запросов из определенного IP-адреса.

Включение диагностики приложений

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

Используйте профилировщик Application Insights

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

Application Insights Profiler предоставляет статистику времени отклика для каждого веб-вызова и трассировки, которые показывают, какая строка кода вызвала медленные ответы. Иногда приложение службы приложений медленно, так как определенный код не записывается в производительном режиме. Примеры включают последовательный код, который может выполняться параллельно, а также нежелательные конфликты блокировок базы данных. Удаление этих узких мест в коде повышает производительность приложения, но их трудно обнаружить без настройки сложных трассировок и журналов. Трассировки, собранные Application Insights Profiler, помогают определить строки кода, которые замедляют работу приложения, и решить эту проблему для приложений App Service.

Дополнительные сведения см. в разделе "Включение профилировщика .NET для приложений службы приложений Azure" в Windows.

Настройка диагностических трассировок вручную

Если у вас есть доступ к исходному коду веб-приложения, диагностика приложений позволяет записывать сведения, созданные веб-приложением. Приложения ASP.NET могут использовать класс System.Diagnostics.Trace для записи информации в журнал диагностики приложений. Тем не менее необходимо изменить код приложения и повторно развернуть его. Этот метод рекомендуется, если приложение работает в тестовой среде.

Подробные инструкции по настройке приложения для ведения журнала см. в статье "Включение ведения журнала диагностики для приложений в Службе приложений Azure".

Использование средства диагностики

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

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

Использование консоли отладки Kudu

Служба приложений включает в себя консоль отладки, которую можно использовать для отладки, изучения и отправки файлов. Он также предоставляет конечные точки JSON для получения сведений о вашей среде. Она называется консоль Kudu или панель мониторинга SCM приложения.

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

Kudu предоставляет следующие функции:

  • Параметры среды для приложения
  • Поток логов
  • Диагностический дамп
  • Консоль отладки, в которой можно запускать командлеты PowerShell и основные команды DOS

Еще одна полезная функция Kudu заключается в том, что если ваше приложение генерирует исключения первого шанса, вы можете использовать Kudu и средство SysInternals Procdump для создания дампов памяти. Эти дампы памяти представляют собой снимок процессов и могут помочь в устранении сложных проблем в приложении.

Дополнительные сведения о функциях, доступных в Kudu, см. в онлайн-инструментах Веб-сайтов Windows Azure, которые вы должны знать.

Устранение проблемы

Масштабирование приложения

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

Дополнительные сведения о масштабировании см. в статье Увеличение масштаба приложения в Azure.

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

Масштабирование можно задать вручную или автоматически.

Использовать автоматическое восстановление

Автоматическое исцеление перезапускает рабочий процесс для приложения на основе параметров, которые вы выбираете, например изменения конфигурации, запросы, ограничения на основе памяти или время, необходимое для выполнения запроса. Большую часть времени, переработка процесса является самым быстрым способом восстановления от проблемы. Хотя вы всегда можете перезапустить приложение непосредственно на портале Azure, автоматическое восстановление выполняется автоматически для вас. Для этого достаточно добавить в корневой файл web.config вашего приложения некоторые триггеры. Эти параметры работают так же, даже если приложение не является приложением .NET.

Дополнительные сведения см. в статье об автоматическом восстановлении веб-сайтов Microsoft Azure.

Перезапуск приложения

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

Снимок экрана: панель меню приложения с кнопками остановки и перезапуска.

Вы также можете управлять приложением с помощью Azure PowerShell. Дополнительные сведения см. в статье Управление ресурсами Azure с помощьюAzure PowerShell.

Отказ от ответственности за контакт с третьими лицами

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