Вы просматриваете документацию 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:
- Войдите в пользовательский интерфейс Apigee Edge как пользователь с соответствующей ролью .
Переключитесь на организацию, в которой вы хотите разобраться в проблеме.
- Перейдите на страницу Анализ > Мониторинг API > Расследование .
- Выберите конкретный период времени, в течение которого вы наблюдали ошибки.
Постройте график зависимости кода неисправности от времени .
Выберите ячейку с кодом ошибки
messaging.adaptors.http.flow.ErrorResponseCode
, как показано ниже:Информация о коде ошибки
messaging.adaptors.http.flow.ErrorResponseCode
отображается, как показано ниже:Нажмите «Просмотреть журналы» и разверните строку с невыполненным запросом.
- В окне «Журналы» обратите внимание на следующие детали:
- Запросить идентификатор сообщения
- Код состояния:
500
- Источник неисправности:
target
- Код ошибки:
messaging.adaptors.http.flow.ErrorResponseCode
След
Процедура № 2: Использование инструмента «Трассировка»
Чтобы диагностировать ошибку с помощью инструмента трассировки:
- Включите сеанс трассировки и либо
- Подождите, пока произойдет
500 Internal Server Error
Error с кодом ошибкиmessaging.adaptors.http.flow.ErrorResponseCode
, или - Если вы можете воспроизвести проблему, выполните вызов API, чтобы воспроизвести проблему
500 Internal Server Error
- Подождите, пока произойдет
Убедитесь, что параметр «Показать все FlowInfos» включен:
- Выберите один из неудачных запросов и проверьте трассировку.
- Перемещайтесь по различным этапам трассировки и найдите место, где произошел сбой.
Обычно вы обнаружите ошибку в потоке после фазы получения ответа от целевого сервера, как показано ниже:
- Перейдите к этапу AX (записанные аналитические данные) в трассировке и щелкните его.
Прокрутите вниз до раздела «Заголовки ответов с подробностями фазы» и определите значения X-Apigee-fault-code и X-Apigee-fault-source и X-Apigee-Message-ID, как показано ниже:
- Обратите внимание на значения X-Apigee-fault-code , X-Apigee-fault-source и X-Apigee-Message-ID :
Заголовки ответов | Ценить |
---|---|
X-Apigee-код неисправности | messaging.adaptors.http.flow.ErrorResponseCode |
X-Apigee-источник-ошибки | target |
X-Apigee-Message-ID | MESSAGE_ID |
НГИНКС
Процедура №3: Использование журналов доступа NGINX
Чтобы диагностировать ошибку с помощью журналов доступа NGINX:
- Если вы являетесь пользователем частного облака , вы можете использовать журналы доступа NGINX для определения ключевой информации о
500 Internal Server Error
. Проверьте журналы доступа NGINX:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_log
- Выполните поиск, чтобы узнать, есть ли какие-либо
500
ошибок с кодом ошибкиmessaging.adaptors.http.flow.ErrorResponseCode
в течение определенного периода времени (если проблема возникла в прошлом) или есть ли какие-либо запросы, которые по-прежнему завершаются сбоем с500
. Если вы обнаружите какие-либо
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
на которую ответил внутренний сервер, может быть вызвана рядом причин. Вам нужно будет диагностировать каждую ситуацию самостоятельно.
- Определите код ошибки и источник ошибки, наблюдаемой с помощью мониторинга API, инструмента трассировки или журналов доступа NGINX, как описано в разделе «Общие шаги диагностики» .
- Если источником ошибки является
target
, а код ошибки —messaging.adaptors.http.flow.ErrorResponseCode
, это означает, что ошибка возвращается внутренним сервером. - Для диагностики причины проблемы можно использовать один из следующих шагов:
След
Использование трассировки:
Если у вас есть сеанс трассировки сбоя, выполните следующие действия:
- В трассировке выберите запрос API, который завершился неудачей с
500 Internal Server Error
. Выберите этап «Ответ, полученный от целевого сервера» из неудачного запроса API, как показано на рисунке ниже:
Прокрутите вниз до раздела «Сведения о этапе» и проверьте содержимое ответа, которое содержит ответ от внутреннего сервера.
Пример содержания ответа:
<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. - Проверьте сообщение об ошибке (ответ), полученное от внутреннего сервера.
Выполните следующие шаги, чтобы выполнить прямой вызов внутреннего сервера:
- Убедитесь, что у вас есть все необходимые заголовки, параметры запроса и все учетные данные, которые необходимо передать на внутренний сервер как часть запроса.
- Если серверная служба общедоступна, вы можете использовать команду
curl
, Postman или любой другой клиент REST и напрямую вызвать API внутреннего сервера. Если внутренний сервер доступен только из процессоров сообщений, вы можете использовать команду
curl
, Postman или любой другой клиент REST и вызвать API внутреннего сервера непосредственно из процессора сообщений.- Убедитесь, что серверная служба действительно возвращает
500 Internal Server Error
, проверьте сообщение об ошибке (ответ), возвращаемое внутренним сервером, и определите причину этой ошибки.
Журналы внутреннего сервера
Использование журналов внутреннего сервера
- Просмотрите журналы внутреннего сервера и попытайтесь получить более подробную информацию об ошибке и ее причине.
- Если возможно, включите режим отладки на внутреннем сервере, чтобы получить более подробную информацию об ошибке и ее причине.
- В трассировке выберите запрос API, который завершился неудачей с
Проверьте, используете ли вы цепочку прокси-серверов в конкретной целевой конечной точке неисправного прокси-сервера API; то есть, если целевой сервер/целевая конечная точка вызывает другой прокси-сервер в Apigee Edge. Чтобы определить это:
Если у вас есть трассировка неудачного запроса, перейдите к этапу «Запрос отправлен на целевой сервер» и нажмите « Показать Curl» .
- Откроется окно Curl for Request Sent to Target Server, в котором вы можете определить псевдоним хоста целевого сервера.
- Просмотрите целевую конечную точку вашего прокси-сервера API и проверьте, указывает ли URL-адрес внутреннего сервера или имя хоста на целевом сервере на другой прокси-сервер или ваш собственный внутренний сервер.
- Если псевдоним хоста целевого сервера указывает на псевдоним виртуального хоста, то это цепочка прокси. В этом случае вам необходимо повторить все вышеописанные шаги для связанного прокси, пока не определите, что на самом деле является причиной
500 Internal Server Error
. В этих случаях500 Internal Server Error
может возникнуть и в других связанных прокси-серверах на других этапах, что можно диагностировать и устранить с помощью инструкций, приведенных в этом сборнике инструкций или в сборнике инструкций 500 Internal Server Error . - Если псевдоним хоста целевого сервера указывает на ваш внутренний сервер, перейдите к разделу «Разрешение» .
Разрешение
Если установлено, что ошибка 500
исходит от внутреннего сервера, обратитесь к команде вашего внутреннего сервера, чтобы устранить проблему соответствующим образом.
В примере, рассмотренном выше, вам, возможно, придется запросить у пользователей действительные учетные данные, чтобы решить эту проблему.
Ключевые моменты, на которые следует обратить внимание
- Фактическое сообщение об ошибке, возвращаемое внутренним сервером для
500 Internal Server Error
можно просмотреть только в том случае, если вы записали сеанс трассировки для неудачных запросов. - Ответ внутреннего сервера не будет регистрироваться в журналах мониторинга API, журналах доступа NGINX или процессоре сообщений по соображениям безопасности.
- Вы можете просмотреть журналы внутреннего сервера или включить режим отладки на внутреннем сервере, чтобы получить более подробную информацию о
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
ошибок.