Проблемы с производительностью веб-приложений, доступностью и приложениями для Служба приложений Azure

Примечание.

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

Сводка

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

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

Сведения о квотах и ограничениях см. в статье Ограничения службы приложений App Service.

План службы приложений отображает использование ЦП или памяти даже при остановке всех веб-приложений

Служба приложений требует непрерывного системного процесса, обрабатывающего несколько операций платформы и функций, таких как обновления системы безопасности, доступность консоли SCM (Kudu), мониторинг приложений, проверка подлинности и многие другие функции веб-приложения.

Системные процессы выполняются в планах службы приложений, даже если веб-приложения не выполняются, или если план службы приложений не содержит веб-приложений.

Процессы платформы используют минимальный объем ресурсов (например, ЦП, памяти и дискового пространства), и вы должны учитывать эти ресурсы во время планирования емкости, мониторинга и автоматического масштабирования конфигурации плана службы приложений.

Производительность приложения замедляется

На снижение производительности приложения могут влиять несколько факторов. Пошаговые инструкции по устранению неполадок см. в разделе Устранение неполадок, связанных с низкой производительностью веб-приложения.

Подсказка

  • Включите параметр AlwaysOn вразделе "Общие параметры конфигурации>", чтобы сохранить приложение теплым и избежать холодных запусков. Этот параметр помогает сократить задержку после простоя, особенно в базовых и более высоких планах.
  • Настройте путь проверки работоспособности для отслеживания работоспособности приложения и автоматической замены неответственных экземпляров. Эта конфигурация помогает поддерживать доступность и производительность. Для получения дополнительной информации см. Мониторинг экземпляров службы приложений с помощью проверки работоспособности.

Как устранить неполадки с высоким потреблением ЦП?

В некоторых сценариях с высоким потреблением ЦП ваше приложение может действительно требовать больше вычислительных ресурсов. В этом случае мы советуем выбрать более высокий уровень служб, за счет чего приложение получит все необходимые ресурсы. Кроме того, причиной высокого уровня потребления ресурсов ЦП может стать неправильный цикл или процедура кодирования. Чтобы определить причину более активного использования ресурсов ЦП, необходимо выполнить два действия. Сначала создайте дамп процесса, а затем проанализируйте его. Дополнительные сведения см. в статье Сбор и анализ файла дампа при высокой загрузке ЦП для веб-приложений.

Как устранить неполадки с высоким потреблением памяти?

В некоторых сценариях потребления памяти приложение может действительно требовать больше вычислительных ресурсов. В этом случае мы советуем выбрать более высокий уровень служб, за счет чего приложение получит все необходимые ресурсы. Иногда ошибка в коде может вызывать утечку памяти. Практика кодирования также может увеличить потребление памяти. Чтобы определить причину активного использования памяти, необходимо выполнить два действия. Сначала создайте дамп процесса, а затем проанализируйте его. Средство диагностики сбоев из галереи расширений сайтов Azure может эффективно выполнять оба этих шага. Дополнительные сведения см. в статье Создание и анализ файла дампа при периодически возникающем высоком потреблении памяти в веб-приложениях.

Как автоматизировать задачи веб-приложений службы приложений с помощью PowerShell?

Настроить веб-приложения службы приложений и управлять ими можно с помощью командлетов PowerShell. Дополнительные сведения о том, как использовать командлеты PowerShell на основе Azure Resource Manager для автоматизации типовых задач, см. в статье Автоматизация веб-приложений, размещенных в Служба приложений Azure, с помощью PowerShell.

Примечание.

Для текущих сценариев автоматизации используйте последний модуль Az.Websites . Старый AzureRM модуль устарел.

Мне нужно собрать сведения для устранения неполадок с веб-приложением

Просмотр журналов событий веб-приложения

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

  1. Перейдите на веб-сайт Kudu (https://*yourwebsitename*.scm.azurewebsites.net).
  2. В меню выберите Консоль отладки>CMD.
  3. Выберите папку LogFiles.
  4. Чтобы просмотреть журналы событий, щелкните значок карандаша рядом с файлом eventlog.xml.
  5. Чтобы загрузить журналы, выполните командлет PowerShell Save-AzureWebSiteLog -Name webappname.

Создать дамп памяти пользовательского режима веб-приложения

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

  1. Перейдите на веб-сайт Kudu (https://*yourwebsitename*.scm.azurewebsites.net).
  2. Откройте меню Обозреватель процессов.
  3. Щелкните правой кнопкой мыши процесс w3wp.exe или процесс своей веб-задачи.
  4. Выберите Download Memory Dump (Загрузить дамп памяти)>Full Dump (Полный дамп).

Просмотр сведений о уровне процесса для веб-приложения

Сведения уровня процесса о веб-приложении можно просмотреть двумя способами:

  • На портале Azure:

    1. Откройте обозреватель процессов веб-приложения.
    2. Чтобы просмотреть сведения, выберите процесс w3wp.exe.
  • В консоли Kudu:

    1. Перейдите на веб-сайт Kudu (https://*yourwebsitename*.scm.azurewebsites.net).
    2. Откройте меню Обозреватель процессов.
    3. Откройте меню Свойства процесса w3wp.exe.

Не удается найти файлы журнала в структуре папок веб-приложения при использовании функции локального кэша службы приложений

Если вы используете функцию локального кэша службы приложений, она влияет на структуру папок LogFiles и папок данных для экземпляра службы приложений. При использовании локального кэша система создает вложенные папки в папках LogFiles и Data. Вложенные папки используют шаблон именования "уникальный идентификатор" и метку времени. Каждая подпапка соответствует экземпляру виртуальной машины (VM), в котором веб-приложение выполняется или выполнялось ранее.

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

Чтобы включить трассировку неудачных запросов

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

  1. Откройте портал Azure и перейдите к своему веб-приложению.

  2. Выберите Все параметры>Журналы диагностики.

  3. Для Трассировка неудачных запросов выберите Вкл..

  4. Выберите Сохранить.

  5. В колонке веб-приложения выберите Средства.

  6. Выберите Visual Studio Online.

  7. Если параметр не включен, нажмите кнопку "Вкл.".

  8. Выберите Перейти.

  9. Выберите Web.config.

  10. В system.webServer добавьте следующую конфигурацию (для записи определенного URL-адреса):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*api*" />
    <add path="*api*">
    <traceAreas>
    <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  11. Чтобы устранить проблемы, которые приводят к снижению производительности, добавьте следующую конфигурацию (если запись запроса занимает более 30 секунд):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*" />
    <add path="*">
    <traceAreas> <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions timeTaken="00:00:30" statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  12. Чтобы скачать трассировки неудачных запросов, на портале Azure перейдите на свой веб-сайт.

  13. Выберите Средства>Kudu>Перейти.

  14. В меню выберите Консоль отладки>CMD.

  15. Выберите папку LogFiles, а затем выберите папку, имя которой начинается с W3SVC.

  16. Чтобы открыть XML-файл, щелкните значок карандаша.

Дополнительные рекомендации по повышению производительности и устойчивости

  • Используйте Application Insights и Azure Monitor для полноценного наблюдения вашего приложения App Service, включая данные телеметрии, трассировку зависимостей и живые метрики.

  • Если вы развертываете ресурсы в регионах, поддерживающих зоны доступности, рассмотрите возможность включения зональной избыточности для повышения устойчивости при региональных сбоях. Дополнительные сведения см. в разделе «Надежность в службе приложений Azure».

  • Служба приложений проходит регулярное обслуживание, чтобы обеспечить надежность платформы. Для повышения контроля над поведением обновления, особенно в среде службы приложений версии 3, настройте параметры обновления. Дополнительные сведения см. в разделе "Плановое обслуживание" службы приложений Azure.