Backend errors internal

Симптом

Клиентское приложение получает код состояния HTTP 500вместе с сообщением Internal Server Errorв качестве ответа на вызовы API.

Код состояния HTTP 500— это общий ответ об ошибке. Это означает, что сервер столкнулся с непредвиденной ситуацией, которая не позволила ему выполнить запрос. Эта ошибка обычно возвращается сервером, когда никакой другой код ошибки не подходит.

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

Клиентское приложение получает следующий код ответа:

HTTP/1.1 500 Internal Server Error

Кроме того, вы можете увидеть сообщение об ошибке, подобное показанному ниже:

Пример ответа внутреннего сервера №1

{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}

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

Возможные причины

Может 500 Internal Server Errorбыть возвращен внутренним сервером по ряду причин. В этом пособии объясняется, как устранять неполадки с помощью стандартных шагов и устранять эту ошибку независимо от ее причины.

Возможные причины этой проблемы следующие:

Общие этапы диагностики

Используйте один из следующих инструментов/методов для диагностики этой ошибки:

Процедура № 1: Использование API-мониторинга

Примечание . Инструкции в этом разделе применимы только к пользователям общедоступного облака.

Чтобы диагностировать ошибку с помощью мониторинга API:

  1. Войдите в пользовательский интерфейс Apigee Edge как пользователь с соответствующей ролью .
  2. Переключитесь на организацию, в которой вы хотите исследовать проблему.

    Backend errors internal

  3. Перейдите на страницу « Анализ» > «Мониторинг API» > «Исследовать ».
  4. Выберите конкретный период времени, в котором вы наблюдали ошибки.
  5. Постройте график кода неисправности в зависимости от времени .

    Примечание. Вы также можете построить график зависимости кода состояния от времени .

  6. Выберите ячейку с кодом неисправности messaging.adaptors.http.flow.ErrorResponseCode, как показано ниже:

    Backend errors internal

  7. Информация о коде неисправности messaging.adaptors.http.flow.ErrorResponseCodeотображается, как показано ниже:

    Backend errors internal

  8. Щелкните Просмотреть журналы и разверните строку неудачного запроса.

    просмотреть увеличенное изображение )

    Backend errors internal

  9. В окне « Журналы » обратите внимание на следующие сведения:
    • Идентификатор сообщения запроса
    • Код состояния: 500
    • Источник неисправности: target
    • Код неисправности: messaging.adaptors.http.flow.ErrorResponseCode

Причина: ошибка внутреннего сервера.

Диагноз

Ответ 500 Internal Server Errorвнутреннего сервера может быть вызван рядом причин. Вам нужно будет диагностировать каждую ситуацию самостоятельно.

  1. Определите код ошибки, источник ошибки для ошибки, обнаруженной с помощью мониторинга API, инструмента трассировки или журналов доступа NGINX, как описано в разделе Общие этапы диагностики .
  2. Если Источник ошибки targetи Код ошибки , messaging.adaptors.http.flow.ErrorResponseCodeэто означает, что ошибка возвращена внутренним сервером.
  3. Вы можете использовать один из следующих шагов для диагностики причины проблемы:

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

    Если у вас есть сеанс трассировки сбоя, выполните следующие действия:

    1. В трассировке выберите неудавшийся запрос API с 500 Internal Server Error.
    2. Выберите ответ, полученный от фазы целевого сервера, из неудачного запроса API, как показано на рисунке ниже:

      просмотреть увеличенное изображение )

      Backend errors internal

    3. Прокрутите вниз до раздела « Сведения о фазе » и проверьте содержимое ответа, которое содержит ответ от внутреннего сервера.

      Пример содержания ответа:

      <Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
         <Body>
            <Error>
               <code>500</code>
               <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
            </Error>
         </Body>
      </Envelope>
      

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

    Примечание:

    • Содержимое ответа будет видно в трассировке, только если внутренний сервер отправит тело ответа/полезную нагрузку, содержащую сообщение об ошибке.
    • В некоторых случаях внутренний сервер может не отправлять сообщения об ошибках как часть 500 Internal Server Errorответа. В таких случаях вам необходимо работать с командой вашего внутреннего сервера для дальнейшего изучения этой проблемы.
  4. Проверьте, не используете ли вы цепочку прокси -серверов в конкретной целевой конечной точке неисправного прокси-сервера API; то есть, если целевой сервер/целевая конечная точка вызывает другой прокси в Apigee Edge. Чтобы определить это:
    1. Если у вас есть трассировка неудачного запроса, перейдите к фазе « Запрос, отправленный на целевой сервер » и нажмите « Показать Curl» .

      Backend errors internal

    2. Откроется окно Curl for Request Sent to Target Server , из которого можно определить псевдоним хоста целевого сервера.
    3. Просмотрите целевую конечную точку вашего API-прокси и проверьте, указывает ли URL-адрес внутреннего сервера или имя хоста на целевом сервере на другой прокси или ваш собственный внутренний сервер.
    4. Если псевдоним хоста целевого сервера указывает на псевдоним виртуального хоста, то это цепочка прокси. В этом случае вам нужно повторить все вышеперечисленные шаги для связанного прокси-сервера, пока вы не определите, что на самом деле вызывает ошибку 500 Internal Server Error. В этих случаях 500 Internal Server Errorмогут возникать и другие связанные прокси-серверы на других этапах, которые можно диагностировать и устранить с помощью инструкций, приведенных в этом руководстве или в руководстве 500 Internal Server Error .
    5. Если псевдоним хоста целевого сервера указывает на ваш внутренний сервер, перейдите к разделу « Решение » .

Разрешение

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

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

Ключевые моменты, на которые следует обратить внимание

  1. Фактическое сообщение об ошибке, возвращенное внутренним сервером для 500 Internal Server Error, можно просмотреть, только если вы захватили сеанс трассировки для неудачных запросов.
  2. Ответ внутреннего сервера не будет регистрироваться в мониторинге API, журналах доступа NGINX или журналах процессора сообщений по соображениям безопасности.
  3. Вы можете просмотреть журналы внутреннего сервера или включить режим отладки на внутреннем сервере, чтобы получить дополнительные сведения об 500 Internal Server Errorошибке и/или просмотреть сообщение об ошибке, возвращаемое внутренним сервером.

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

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

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

  • Название организации
  • Имя среды
  • Имя API-прокси
  • Полная curlкоманда для воспроизведения 500ошибки
  • Файл трассировки, содержащий запросы с500 Internal Server Error
  • Если 500ошибки не возникают в настоящее время, укажите период времени с информацией о часовом поясе, когда 500ошибки возникали в прошлом.

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

  • Полное сообщение об ошибке, наблюдаемое для неудачных запросов
  • Организация, имя среды и имя прокси-сервера API, для которых вы наблюдаете 500ошибки
  • Пакет API-прокси
  • Файл трассировки, содержащий запросы с500 Internal Server Error
  • Журналы доступа NGINX/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logГде: ORG,ENV, а такжеPORT# заменяются фактическими значениями.
  • Системные журналы процессора сообщений /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Период времени с информацией о часовом поясе, когда 500произошли ошибки.
Ника Боника
Оцените автора
Добавить комментарий