Устранение ошибок HTTP "502 — недопустимый шлюз" и "503 — служба недоступна" в Службе приложений Azure

"502 — недопустимый шлюз" и "503 — служба недоступна" — распространенные ошибки, возникающие при работе приложения, размещенного в Службе приложений Azure. Эта статья поможет вам устранить эти ошибки.

Если вам потребуется дополнительная помощь по любому из вопросов, рассматриваемых в статье, вы можете обратиться к экспертам по Azure на форумах MSDN Azure и Stack Overflow. Кроме того, можно зарегистрировать обращение в службу поддержки Azure. Перейдите на сайт службы поддержки Azure и щелкните Поддержка.

Симптом

При открытии приложения браузер возвращает ошибку HTTP "502 — недопустимый шлюз" или HTTP "503 — служба недоступна".

Причина

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

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

Действия по устранению ошибок "502 — недопустимый шлюз" и "503 — служба недоступна"

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

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

Служба приложений содержит несколько параметров для каждого из этих этапов.

1. Наблюдение за поведением приложения

Мониторинг работоспособности службы

Microsoft Azure информирует о каждом случае прерывания работы или снижения производительности службы. Можно следить за работоспособностью службы на портале Azure. Дополнительные сведения см. в статье Получение информации о работоспособности службы.

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

Этот инструмент позволяет определить наличие проблем с приложением. В колонке вашего приложения щелкните на плитку Запросы и ошибки. Колонка Метрика содержит все метрики, которые вы можете добавить.

Некоторые из этих метрик помогут вам отслеживать работу приложения, например,

  • средний размер рабочего набора памяти;
  • Среднее время ответа
  • время ЦП;
  • рабочий набор памяти;
  • Requests

Мониторинг приложения для устранения ошибок HTTP

Дополнительные сведения см. в разделе:

2. Сбор данных

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

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

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

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

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

Вы можете открыть эту панель по ссылке https://<имя_вашего_приложения>.scm.azurewebsites.net/.

Вот некоторые возможности консоли Kudu:

  • настройки среды для вашего приложения;
  • потоковая передача журналов;
  • диагностический дамп;
  • консоль отладки с возможностью запуска командлетов PowerShell и основных команд DOS.

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

Дополнительные сведения о возможностях консоли Kudu см. в статье Azure Websites online tools you should know about (Интерактивные инструменты веб-сайтов Azure, о которых вам нужно знать).

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

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

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

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

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

Вы можете выбрать ручной или автоматический режим масштабирования.

Использование функции AutoHeal

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

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

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

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

Перезапуск приложения для устранения ошибок HTTP

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