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


Вопросы и ответы о производительности приложений для веб-приложений в Azure

Примечание.

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

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

Если эта статья не помогла устранить вашу проблему с Azure, посетите форумы по Azure на сайтах MSDN и Stack Overflow. Описание своей проблемы можно опубликовать на этих форумах или написать в Twitter (@AzureSupport). Также можно отправить запрос в службу поддержки Azure. Чтобы отправить такой запрос, на странице поддержки Azure щелкните Получить поддержку.

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

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

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

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

Почему приложение работает медленно?

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

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

В некоторых сценариях с высоким уровнем потребления ресурсов ЦП приложение действительно требует большего объема вычислительных ресурсов. В этом случае мы советуем выбрать более высокий уровень служб, за счет чего приложение получит все необходимые ресурсы. Кроме того, причиной высокого уровня потребления ресурсов ЦП может стать неправильный цикл или процедура кодирования. Чтобы определить причину более активного использования ресурсов ЦП, необходимо выполнить два действия. Сначала создайте дамп процесса, а затем выполните его анализ. Дополнительные сведения см. в записи блога How to capture and analyze a dump file when intermittent High CPU happens on Azure Web App (Создание и анализ файла дампа при высоком уровне потребления ресурсов ЦП в веб-приложениях Azure).

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

В некоторых сценариях с высоким уровнем потребления памяти приложение действительно требует большего объема вычислительных ресурсов. В этом случае мы советуем выбрать более высокий уровень служб, за счет чего приложение получит все необходимые ресурсы. Кроме того, причиной высокого уровня потребления и утечки памяти может стать ошибка в коде или процедура кодирования. Чтобы определить причину активного использования памяти, необходимо выполнить два действия. Сначала создайте дамп процесса, а затем выполните его анализ. Средство диагностики аварийного завершения из коллекции Azure Site Extensions позволяет эффективно выполнять оба этих действия. Дополнительные сведения см. в записи блога How to capture and analyze dump for intermittent High Memory on Azure Web App (Создание и анализ файла дампа при высоком уровне потребления памяти в веб-приложениях Azure).

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

Настроить веб-приложения службы приложений и управлять ими можно с помощью командлетов PowerShell. В записи блога Automate web apps hosted in Azure App Service by using PowerShell (Автоматизация веб-приложений, размещенных в службе приложений Azure с помощью PowerShell) описана процедура автоматизации стандартных задач с помощью командлетов PowerShell на основе Azure Resource Manager. Кроме того, в этой записи блога приведен пример кода для различных задач управления веб-приложениями. Описание и синтаксис всех командлетов веб-приложений службы приложений см. в статье о командах Az.Websites.

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

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

  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.

При переходе к моему приложению отображается сообщение "Ошибка 403 - Это веб-приложение остановлено". Разделы справки устранить эту проблему?

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

  • затраты на веб-приложение достигли установленного предела и сайт был отключен;
  • веб-приложение остановлено на портале;
  • для веб-приложения достигнут предел квоты на ресурсы, который применяется к планам масштабирования "Бесплатно" или "Общий".

Чтобы определить причину ошибки и устранить ее, выполните указания из записи блога Azure Web Apps: Error 403 — This web app is stopped (Ошибка 403 "Это веб-приложение остановлено" в веб-приложениях Azure).

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

Сведения о квотах и ограничениях см. в этом разделе.

Как уменьшить время отклика при первом запросе после времени простоя?

По умолчанию веб-приложения выгружаются, если они неактивны в течение заданного периода времени. Это позволяет сэкономить системные ресурсы. Недостатком является то, что ответ на первый запрос, отравленный после выгрузки веб-приложения, возвращается дольше. Это позволяет веб-приложению загрузиться и приступить к обработке ответов. При использовании планов обслуживания "Базовый" и "Стандартный" вы можете включить параметр Всегда включено, чтобы предотвратить выгрузку приложения. Это позволит избежать более длительного времени загрузки после простоя приложения. Чтобы включить параметр Всегда включено, сделайте следующее:

  1. Откройте портал Azure и перейдите к своему веб-приложению.
  2. Выберите пункт Конфигурация
  3. Выберите пункт Общие параметры.
  4. Установите переключатель Всегда включено в положение Вкл.

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

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

  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. Чтобы загрузить трассировки невыполненных запросов в журнал, откройте портал и перейдите на свой веб-сайт.

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

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

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

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

Отображается сообщение "Рабочий процесс запрашивал перезапуск из-за ограничения процента памяти". Разделы справки решить эту проблему?

Максимальный объем памяти для 32-разрядного процесса (даже в 64-разрядной операционной системе) составляет 2 ГБ. По умолчанию в службе приложений используются 32-разрядные рабочие процессы (для совместимости с устаревшими веб-приложениями).

Мы советуем перейти на 64-разрядные процессы. Это позволит выделить для рабочей веб-роли дополнительный объем памяти. Это действие активирует перезапуск веб-приложения, поэтому запланируйте соответствующим образом.

Кроме того, обратите внимание, что для 64-разрядной среды требуется план обслуживания "Базовый" или "Стандартный". В 32-разрядной среде всегда используются планы обслуживания "Бесплатный" и "Общий".

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

Почему через 230 секунд истекает время ожидания запроса?

По умолчанию время ожидания простоя в Azure Load Balancer имеет значение 4 минуты. Обычно это логичное ограничение по времени отклика для веб-запроса. таким образом, Служба приложений возвращает клиенту время ожидания, если приложение не возвращает ответ в течение примерно 240 секунд (230 секунд в приложении Windows, 240 секунд в приложении Linux). Если обработка веб-приложения также выполняется в фоновом режиме, мы советуем использовать веб-задания Azure. Веб-приложение Azure может вызывать веб-задания и получать уведомления при завершении фоновой обработки. Доступно несколько методов использования веб-заданий, в том числе очереди и триггеры.

Веб-задания предназначены для фоновой обработки. Ограничения на выполнение фоновой обработки в веб-задании отсутствуют. Дополнительные сведения о веб-заданиях см. в статье Выполнение фоновых задач с веб-заданиями.

Приложения ASP.NET Core, размещенные в службе приложений, иногда перестают отвечать на запросы. Как устранить эту проблему?

Проблема, из-за которой приложение ASP.NET Core 1.0, размещенное в службе приложений, периодически перестает отвечать на запросы, может быть вызвана известной проблемой в ранней версии Kestrel. Кроме того, может появиться такое сообщение: "В указанном приложении CGI возникла ошибка, и процесс был остановлен сервером".

Эта проблема исправлена в Kestrel версии 1.0.2. Эта версия входит в состав обновления ASP.NET Core 1.0.3. Чтобы устранить эту проблему, обновите зависимости приложения для использования Kestrel 1.0.2. Кроме того, эту проблему можно решить одним из двух способов, описанных в записи блога ASP.NET Core 1.0 slow perf issues in App Service web apps (Проблемы низкой производительности ASP.NET Core 1.0 в веб-приложениях службы приложений).

В структуре файла веб-приложения не отображаются файлы журналов. Как их найти?

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

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

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

Я вижу сообщение "Предпринята попытка получить доступ к сокету таким образом, что запрещено его разрешениями на доступ". Разделы справки устранить эту ошибку?

Эта ошибка обычно возникает, если достигнут предел исходящих TCP-подключений на экземпляре виртуальной машины. В службе приложений применяются ограничения на максимальное количество исходящих подключений каждого экземпляра виртуальной машины. Дополнительные сведения см. в разделе Ограничения на подключения между виртуальными машинами.

Эта ошибка также может возникать при попытке подключения к локальному адресу из приложения. Дополнительные сведения см. в разделе Запросы на подключения к локальным адресам.

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

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

Пошаговые указания по выполнению отладки веб-приложения с помощью Visual Studio см. в этой записи блога.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.