503 Service Unavailable - Backend Server (Сервис недоступен – серверная часть)

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Видео

Чтобы узнать больше о том, как устранять ошибки "Сервис недоступен" (503), посмотрите видео ниже.

Видео Описание
Ошибка 503: сервис недоступен (от внутреннего сервера) Узнайте больше о следующих темах:
  • Введение в ошибку "503 Service Unavailable" в Apigee Edge
  • Устранение неполадок и решение проблемы с ошибкой 503 (Сервис недоступен) от внутреннего сервера в реальном времени

Symptom

Клиентское приложение получает код статуса HTTP-ответа 503 с сообщением Сервис недоступен после вызова прокси-сервера API.

Сообщения об ошибках

Вы можете увидеть одно из следующих сообщений об ошибке:

HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

В HTTP-ответе также может появиться сообщение об ошибке, например:

The server is temporarily unable to service your request due to
maintenance downtime or capacity problems. Please try again later.

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

Причины

Код статуса HTTP 503 означает, что сервер в настоящее время не может обрабатывать входящие запросы. Обычно эта ошибка возникает, когда сервер перегружен или временно недоступен из-за технического обслуживания.

Возможные причины ответа 503 Service Unavailable:

Cause Описание Кто может выполнять инструкции по устранению неполадок
Перегрузка сервера Сервер перегружен и не может обработать новые входящие клиентские запросы. Пользователи общедоступного и частного облака Edge
Сервер на техническом обслуживании Внутренний сервер может быть временно недоступен из-за технического обслуживания. Пользователи общедоступного и частного облака Edge

Причина: перегрузка сервера или его обслуживание

В Apigee Edge ошибка "503 Service Unavailable" может быть возвращена внутренним сервером в следующих случаях:

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

диагностика;

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

  • Инструмент "Трассировка"
  • Журналы доступа NGINX
  • Прямой вызов внутреннего сервера

На вкладках ниже рассказывается о каждом из этих способов.

Инструмент "Трассировка"

  1. Включите сеанс трассировки и выполните вызов API, чтобы воспроизвести проблему "Сервис недоступен" (503).
  2. Выберите один из неудачных запросов и изучите трассировку.
  3. Перемещайтесь по разным этапам трассировки и найдите, где произошел сбой.
  4. Если вы обнаружите, что ошибка 503 возвращается в качестве ответа от целевого сервера, то причина ошибки 503 – целевой сервер.

    Вот пример скриншота трассировки, на котором показан ответ "503 Service Unavailable", полученный от целевого сервера:

  5. Нажмите на этап Получен ответ от целевого сервера и проверьте разделы "Заголовки ответа" и "Контент ответа", чтобы узнать, есть ли в них полезная информация:
    • Заголовки ответа могут содержать заголовок Server, который указывает, откуда был отправлен ответ об ошибке.
    • Контент ответа может содержать дополнительную информацию о том, почему целевой сервер отправил код ответа 503.
  6. Убедитесь, что ошибка 503 исходит от целевого сервера. Для этого проверьте значения X-Apigee-fault-source и X-Apigee-fault-code на этапе AX (Записанные данные аналитики) в трассировке, выполнив следующие действия:
    1. Нажмите на этап AX (Запись данных Аналитики), как показано на скриншоте ниже:
    2. Прокрутите страницу "Сведения об этапе" до раздела "Заголовки ответа" и определите значения X-Apigee-fault-code и X-Apigee-fault-source, как показано ниже:
    3. Если значения X-Apigee-fault-source и X-Apigee-fault-code совпадают со значениями в таблице ниже, значит ошибка 503 исходит от целевого сервера:
      Заголовки ответов Значение
      X-Apigee-fault-source target
      X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  7. Проверьте, используете ли вы цепочку прокси, то есть вызывает ли целевой сервер или конечная точка другой прокси в Apigee. Чтобы определить это:
    1. Вернитесь к этапу Запрос отправлен на целевой сервер, нажмите кнопку Показать Curl и определите псевдоним хоста целевого сервера.
    2. Если псевдоним целевого хоста указывает на псевдоним виртуального хоста, это называется цепочкой прокси. В этом случае вам нужно повторить все описанные выше шаги для цепочки прокси-серверов, пока вы не определите, что именно вызывает ошибку 503 (Сервис недоступен). В таких случаях ошибка 503 Service Unavailable может возникать и в других прокси-серверах на других этапах. Чтобы диагностировать проблему, воспользуйтесь этим руководством.
    3. Если псевдоним хоста целевого сервера указывает на ваш внутренний сервер, перейдите к разделу Решение.

Журналы доступа NGINX

Вы также можете обратиться к журналам доступа NGINX, чтобы определить, был ли код статуса 503 отправлен внутренним сервером. Это особенно полезно, если проблема возникала в прошлом или если она непостоянна и вы не можете записать трассировку в интерфейсе. Чтобы получить эту информацию из журналов доступа NGINX, выполните следующие действия:

  1. Проверьте журналы доступа NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. Найдите все ошибки 503 для определенного прокси-сервера API за определенный период времени (если проблема возникла в прошлом) или для всех запросов, которые по-прежнему завершаются с ошибкой 503.
  3. Если есть ошибки 503, проверьте, не связаны ли они с внутренним сервером. Если значения X-Apigee-fault-source и X-Apigee-fault-code совпадают со значениями, указанными в таблице ниже, ошибка 503 возникает на внутреннем сервере:
    Заголовки ответов Значение
    X-Apigee-fault-source target
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode

    Вот пример записи, в которой показана ошибка 503, вызванная целевым сервером:

  4. Проверьте определенный прокси API и убедитесь, что вы используете цепочку прокси, то есть если целевой сервер или конечная точка не вызывает другой прокси-сервер в Apigee. Если вы используете цепочку прокси-серверов, повторите все описанные выше действия для каждого прокси-сервера в цепочке, пока не определите, что именно вызывает ошибку "503 Service Unavailable" (Сервис недоступен). В таких случаях ошибка 503 Service Unavailable может возникать и на других этапах работы цепочки прокси-серверов. Чтобы диагностировать проблему, воспользуйтесь этим руководством.
  5. Если вы подтвердите, что не используете цепочку прокси-серверов, а ошибка 503 исходит от вашего внутреннего сервера, перейдите к разделу Решение.

Вызов на серверную часть

Вы можете напрямую вызвать серверную часть и убедиться, что получаете тот же ответ "503 Service Unavailable", что и при отправке запроса через Apigee Edge.

  1. Убедитесь, что у вас есть все необходимые заголовки, параметры запроса и учетные данные, которые нужно передать на серверную часть в составе запроса.
  2. Если бэкенд-служба общедоступна, вы можете использовать команду curl, Postman или любой другой клиент REST и напрямую вызвать API бэкенд-сервера.
  3. Если бэкенд-сервер доступен только из Message Processors, вы можете использовать команду curl, Postman или любой другой клиент REST и вызвать API бэкенд-сервера напрямую из Message Processor.
  4. Убедитесь, что бэкенд-служба действительно возвращает ошибку "503 Service Unavailable" (Сервис недоступен).

Разрешение

Если вы определили, что ошибка 503 возникает на внутреннем сервере, вы можете сделать следующее, чтобы устранить проблему:

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

Как диагностировать проблемы с помощью мониторинга API

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

Пошаговое руководство по устранению неполадок с ошибками 5xx в API с помощью мониторинга API. Например, вы можете настроить оповещение, которое будет срабатывать, когда количество ошибок messaging.adaptors.http.flow.ErrorResponseCode превысит определенный порог.

Необходимо собрать диагностическую информацию

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

Если вы используете общедоступное облако, предоставьте следующую информацию:

  • Название организации
  • Название среды
  • Название прокси API
  • Полная команда curl для воспроизведения ошибки 503
  • Файл трассировки, содержащий запросы с ошибкой "503 Service Unavailable" (Сервис недоступен).
  • Если ошибки 503 в настоящее время не возникают, укажите период времени и часовой пояс, когда они происходили в прошлом.

Если вы используете частное облако, предоставьте следующую информацию:

  • Полное сообщение об ошибке, которое появляется при неудачных запросах.
  • Название организации, среды и прокси API, для которых вы наблюдаете ошибки 503.
  • Пакет прокси API.
  • Файл трассировки, содержащий запросы с ошибкой 503 (Сервис недоступен).
  • Журналы доступа NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  • Журналы обработчика сообщений.
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Период времени с информацией о часовом поясе, когда произошли ошибки 503.