Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Видео
| Видео | Описание |
|---|---|
| 500 Internal Server Error (Внутренняя ошибка сервера) – ошибка, вызванная серверной частью | Показывает ошибку 500 Internal Server Error, вызванную внутренним сервером, а также шаги по устранению неполадки. |
Symptom
Клиентское приложение получает код статуса 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 Monitoring
Чтобы диагностировать ошибку с помощью мониторинга API:
- Войдите в интерфейс Apigee Edge как пользователь с подходящей ролью.
Перейдите к организации, в которой хотите изучить проблему.
- Перейдите на страницу Анализ > Мониторинг API > Исследование.
- Выберите период времени, в течение которого вы наблюдали ошибки.
Постройте график Код ошибки по оси Y и Время по оси X.
Выберите ячейку с кодом ошибки
messaging.adaptors.http.flow.ErrorResponseCode, как показано ниже:( посмотреть изображение в полном размере)

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

Нажмите Посмотреть журналы и разверните строку с неудачным запросом.
( посмотреть изображение в полном размере)
- В окне Журналы обратите внимание на следующие сведения:
- Идентификатор запроса
- Код статуса:
500. - Источник ошибки:
target - Код ошибки:
messaging.adaptors.http.flow.ErrorResponseCode
Трассировка
Процедура 2. Использование инструмента трассировки
Чтобы диагностировать ошибку с помощью инструмента трассировки, выполните следующие действия:
- Включите трассировку сеанса и выберите один из следующих вариантов:
- Дождитесь ошибки
500 Internal Server Errorс кодом ошибкиmessaging.adaptors.http.flow.ErrorResponseCodeили - Если проблему можно воспроизвести, сделайте вызов API, чтобы воспроизвести ее.
500 Internal Server Error
- Дождитесь ошибки
Убедитесь, что включен параметр Показывать все FlowInfo:

- Выберите один из неудачных запросов и изучите трассировку.
- Перемещайтесь по разным этапам трассировки и находите, где произошла ошибка.
Обычно ошибка возникает в потоке после этапа Получен ответ от целевого сервера, как показано ниже.
( посмотреть изображение в полном размере)

- Перейдите к фазе AX (запись данных аналитики) в трассировке и нажмите на нее.
Прокрутите страницу вниз до раздела Phase Details Response Headers (Заголовки ответов с информацией об этапе) и определите значения 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-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
| X-Apigee-fault-source | target |
| X-Apigee-Message-ID | MESSAGE_ID |
nginx
Процедура 3. Использование журналов доступа NGINX
Чтобы диагностировать ошибку с помощью журналов доступа NGINX:
- Если вы используете частное облако, то можете использовать журналы доступа NGINX, чтобы определить ключевую информацию об HTTP
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-fault-code messaging.adaptors.http.flow.ErrorResponseCodeX-Apigee-fault-source target
Причина: ошибка на сервере.
диагностика;
Ответ 500 Internal Server Error от внутреннего сервера может быть вызван разными причинами. В каждом случае вам нужно будет проводить диагностику отдельно.
- Определите код ошибки и источник ошибки, используя мониторинг API, инструмент трассировки или журналы доступа NGINX, как описано в разделе Распространенные этапы диагностики.
- Если в поле Источник ошибки указано значение
target, а в поле Код ошибки –messaging.adaptors.http.flow.ErrorResponseCode, это означает, что ошибка возвращена внутренним сервером. - Чтобы определить причину проблемы, выполните одно из следующих действий:
Трассировка
Как использовать трассировку
Если у вас есть сеанс трассировки для сбоя, выполните следующие действия:
- В трассировке выберите запрос к API, который не удалось выполнить с ошибкой
500 Internal Server Error. Выберите этап Ответ, полученный от целевого сервера из неудачного запроса к API, как показано на рисунке ниже.
( посмотреть изображение в полном размере)
Прокрутите страницу вниз до раздела Phase Details (Сведения об этапе) и проверьте Response Content (Контент ответа),в котором содержится ответ от внутреннего сервера.
Пример ответа
<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 серверной службы. Если бэкенд-сервер доступен только из Message Processors, то вы можете использовать команду
curl, Postman или любой другой REST-клиент и вызвать API бэкенд-сервера напрямую из Message Processor.- Убедитесь, что бэкенд-служба действительно возвращает
500 Internal Server Error, и проверьте сообщение об ошибке (ответ), возвращенное бэкенд-сервером, чтобы определить причину ошибки.
Журналы бэкенд-сервера
Как использовать журналы внутреннего сервера
- Проверьте журналы внутреннего сервера и попытайтесь получить больше информации об ошибке и ее причине.
- Если возможно, включите режим отладки на внутреннем сервере, чтобы получить более подробную информацию об ошибке и ее причине.
- В трассировке выберите запрос к API, который не удалось выполнить с ошибкой
Проверьте, используется ли цепочка прокси в целевой конечной точке, из-за которой возникает ошибка в прокси API. Иными словами, проверьте, вызывает ли целевой сервер или целевая конечная точка другой прокси в Apigee Edge. Чтобы определить, так ли это:
Если у вас есть трассировка для запроса, который не удалось выполнить, перейдите к этапу Запрос отправлен на целевой сервер и нажмите Показать Curl.
- Откроется окно Curl for Request Sent to Target Server (Команда Curl для запроса, отправленного на целевой сервер), в котором можно определить псевдоним хоста целевого сервера.
- Проверьте целевую конечную точку прокси API и убедитесь, что URL или имя хоста целевого сервера указывает на другой прокси или ваш собственный сервер.
- Если псевдоним хоста целевого сервера указывает на псевдоним виртуального хоста, то это цепочка прокси. В этом случае вам нужно повторить все описанные выше шаги для цепочки прокси-серверов, пока вы не определите, что именно вызывает ошибку
500 Internal Server Error. В таких случаях ошибка500 Internal Server Errorможет возникать и в других цепочках прокси на других этапах. Чтобы диагностировать и устранить ее, следуйте инструкциям из этого руководства или руководства по внутренней ошибке сервера 500. - Если псевдоним хоста целевого сервера указывает на ваш внутренний сервер, перейдите к разделу Решение.
Разрешение
Если будет установлено, что ошибка 500 возникает на сервере, обратитесь к команде, которая его обслуживает, чтобы устранить проблему.
В примере выше для устранения проблемы может потребоваться, чтобы пользователи передавали действительные учетные данные.
Важная информация
- Фактическое сообщение об ошибке, возвращенное внутренним сервером для
500 Internal Server Error, можно посмотреть, только если вы записали сеанс трассировки для запросов, которые не удалось выполнить. - Ответ внутреннего сервера не будет регистрироваться в API Monitoring, журналах доступа NGINX или журналах процессора сообщений по соображениям безопасности.
- Вы можете посмотреть журналы внутреннего сервера или включить на нем режим отладки, чтобы получить больше информации об ошибке
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.