500 Внутренняя ошибка сервера — внутренний сервер

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

Видео

Видео Описание
500 Внутренняя ошибка сервера – вызвана серверной частью Демонстрирует в реальном времени 500 Internal Server Error вызванную внутренним сервером, а также действия по устранению и устранению этой ошибки.

Симптом

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

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

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

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

HTTP/1.1 500 Internal Server Error

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

Образец №1

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

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

Образец №2

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

<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 может быть возвращена внутренним сервером по ряду причин. В этом сборнике инструкций объясняется, как устранить неполадки с помощью общих шагов и устранить эту ошибку независимо от ее причины.

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

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

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

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

API-мониторинг

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

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

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

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

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

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

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

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

  8. Нажмите «Просмотреть журналы» и разверните строку с невыполненным запросом.

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

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

След

Процедура № 2: Использование инструмента «Трассировка»

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

  1. Включите сеанс трассировки и либо
    • Подождите, пока произойдет 500 Internal Server Error Error с кодом ошибки messaging.adaptors.http.flow.ErrorResponseCode , или
    • Если вы можете воспроизвести проблему, выполните вызов API, чтобы воспроизвести проблему 500 Internal Server Error
  2. Убедитесь, что параметр «Показать все FlowInfos» включен:

  3. Выберите один из неудачных запросов и проверьте трассировку.
  4. Перемещайтесь по различным этапам трассировки и найдите место, где произошел сбой.
  5. Обычно вы обнаружите ошибку в потоке после фазы получения ответа от целевого сервера, как показано ниже:

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

  6. Перейдите к этапу AX (записанные аналитические данные) в трассировке и щелкните его.
  7. Прокрутите вниз до раздела «Заголовки ответов с подробностями фазы» и определите значения X-Apigee-fault-code и X-Apigee-fault-source и X-Apigee-Message-ID, как показано ниже:

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

  8. Обратите внимание на значения X-Apigee-fault-code , X-Apigee-fault-source и X-Apigee-Message-ID :
  9. Заголовки ответов Ценить
    X-Apigee-код неисправности messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-источник-ошибки target
    X-Apigee-Message-ID MESSAGE_ID

НГИНКС

Процедура №3: ​​Использование журналов доступа NGINX

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

  1. Если вы являетесь пользователем частного облака , вы можете использовать журналы доступа NGINX для определения ключевой информации о 500 Internal Server Error .
  2. Проверьте журналы доступа NGINX:

    /opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_log

  3. Выполните поиск, чтобы узнать, есть ли какие-либо 500 ошибок с кодом ошибки messaging.adaptors.http.flow.ErrorResponseCode в течение определенного периода времени (если проблема возникла в прошлом) или есть ли какие-либо запросы, которые по-прежнему завершаются сбоем с 500 .
  4. Если вы обнаружите какие-либо 500 ошибок с кодом X-Apigee-fault-code , соответствующим значению messaging.adaptors.http.flow.ErrorResponseCode , определите значение X-Apigee-fault-source.

    Пример ошибки 500 из журнала доступа NGINX:

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

    Приведенный выше пример записи из журнала доступа NGINX имеет следующие значения для X-Apigee-fault-code и X-Apigee-fault-source:

    Заголовки Ценить
    X-Apigee-код неисправности messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-источник-ошибки target

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

Диагностика

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

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

    След

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

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

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

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

    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 , который был получен при запросе через Apigee Edge.
    • Проверьте сообщение об ошибке (ответ), полученное от внутреннего сервера.

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

    1. Убедитесь, что у вас есть все необходимые заголовки, параметры запроса и все учетные данные, которые необходимо передать на внутренний сервер как часть запроса.
    2. Если серверная служба общедоступна, вы можете использовать команду curl , Postman или любой другой клиент REST и напрямую вызвать API внутреннего сервера.
    3. Если внутренний сервер доступен только из процессоров сообщений, вы можете использовать команду curl , Postman или любой другой клиент REST и вызвать API внутреннего сервера непосредственно из процессора сообщений.

    4. Убедитесь, что серверная служба действительно возвращает 500 Internal Server Error , проверьте сообщение об ошибке (ответ), возвращаемое внутренним сервером, и определите причину этой ошибки.

    Журналы внутреннего сервера

    Использование журналов внутреннего сервера

    1. Просмотрите журналы внутреннего сервера и попытайтесь получить более подробную информацию об ошибке и ее причине.
    2. Если возможно, включите режим отладки на внутреннем сервере, чтобы получить более подробную информацию об ошибке и ее причине.
  4. Проверьте, используете ли вы цепочку прокси-серверов в конкретной целевой конечной точке неисправного прокси-сервера API; то есть, если целевой сервер/целевая конечная точка вызывает другой прокси-сервер в Apigee Edge. Чтобы определить это:

    1. Если у вас есть трассировка неудачного запроса, перейдите к этапу «Запрос отправлен на целевой сервер» и нажмите « Показать Curl» .

    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 .

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

  • Название организации
  • Имя среды
  • Имя 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 ошибок.