Error interno del servidor: Servidor de backend

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Videos

Video Descripción
500 Error interno del servidor: causado por el backend Se muestra una 500 Internal Server Error en tiempo real que causa el servidor de backend junto con los pasos para solucionar el problema y resolver el error.

Síntoma

La aplicación cliente obtiene un código de estado HTTP de 500 con el mensaje. Internal Server Error como respuesta a las llamadas a la API

El código de estado HTTP 500 es una respuesta de error genérica. Significa que el servidor encontró una condición inesperada que le impidió completar la solicitud. Este error es por lo general el servidor muestra cuando no es adecuado ningún otro código de error.

Mensajes de error

La aplicación cliente obtiene el siguiente código de respuesta:

HTTP/1.1 500 Internal Server Error

Además, es posible que veas un mensaje de error similar al que se muestra a continuación:

Ejemplo 1

Ejemplo de respuesta del servidor de backend n.o 1

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

Ejemplo 2

Ejemplo de respuesta del servidor de backend núm. 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>

Causas posibles

El servidor de backend podría mostrar 500 Internal Server Error debido a un de causas. En esta guía, se explica cómo solucionar problemas mediante pasos comunes independientemente de su causa.

Las posibles causas de este problema son las siguientes:

Causa Descripción Instrucciones de solución de problemas aplicables para
Error en el servidor de backend El servidor de backend puede fallar por algún motivo. Usuarios perimetrales de nubes privadas y públicas

Pasos comunes de diagnóstico

Usa una de las siguientes herramientas o técnicas para diagnosticar este error:

Supervisión de API

Procedimiento 1: Usa la supervisión de API

Para diagnosticar el error con la supervisión de API, haz lo siguiente:

  1. Accede a la IU de Apigee Edge como usuario con un el puesto adecuado.
  2. Cambia a la organización en la que quieres investigar el problema.

  3. Navega a Analyze > Supervisión de API > Investigar.
  4. Selecciona el período específico en el que observaste los errores.
  5. Traza Código de error en Tiempo.

  6. Seleccionar una celda que tenga el código de falla messaging.adaptors.http.flow.ErrorResponseCode como se muestra a continuación:

    ( ver imagen más grande)

  7. Información sobre el código de falla messaging.adaptors.http.flow.ErrorResponseCode se muestra como como se muestra a continuación:

    ( ver imagen más grande)

  8. Haz clic en Ver registros y expande la fila de la solicitud con errores.

    ( ver imagen más grande)

  9. En la ventana Registros, observa los siguientes detalles:
    • ID de mensaje de la solicitud
    • Código de estado: 500
    • Fuente del error: target
    • Código de error: messaging.adaptors.http.flow.ErrorResponseCode

Trace

Procedimiento 2: Usa la herramienta Trace

Para diagnosticar el error con la herramienta Trace, sigue estos pasos:

  1. Habilita la sesión de seguimiento y haz lo siguiente:
    • Espera el error 500 Internal Server Error con el código de error messaging.adaptors.http.flow.ErrorResponseCode, o
    • Si puedes reproducir el problema, realiza la llamada a la API para hacerlo. 500 Internal Server Error
  2. Asegúrate de que Show all FlowInfos esté habilitado:

  3. Selecciona una de las solicitudes fallidas y examina el seguimiento.
  4. Navega por las diferentes fases del seguimiento y localiza dónde ocurrió la falla.
  5. Por lo general, encontrarás el error en un flujo después de la Respuesta recibida del servidor de destino. fase, como se muestra a continuación:

    ( ver imagen más grande)

  6. Navega a la fase AX (datos registrados de Analytics) en el seguimiento y haz clic en ella.
  7. Desplázate hacia abajo hasta la sección Encabezados de respuesta de Detalles de la fase y determina el valores de X-Apigee-fault-code y X-Apigee-fault-source, y X-Apigee-Message-ID como se muestra a continuación:

    ( ver imagen más grande)

  8. Observa los valores de X-Apigee-fault-code, X-Apigee-fault-source, y X-Apigee-Message-ID:
  9. Encabezados de respuesta Valor
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target
    X-Apigee-Message-ID MESSAGE_ID

NGINX

Procedimiento 3: Usa registros de acceso de NGINX

Para diagnosticar el error con los registros de acceso de NGINX, haz lo siguiente:

  1. Si eres un usuario de la nube privada, puedes usar los registros de acceso de NGINX para determinar la información clave sobre 500 Internal Server Error HTTP.
  2. Verifica los registros de acceso de NGINX:

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

  3. Realiza una búsqueda para ver si hay algún error 500 con el código de error messaging.adaptors.http.flow.ErrorResponseCode durante un período específico (si el problema ocurrió en el anteriores) o si todavía hay solicitudes que fallan con 500.
  4. Si encuentras algún error 500 con la coincidencia X-Apigee-fault-code el valor de messaging.adaptors.http.flow.ErrorResponseCode y, luego, y determinar el valor de X-Apigee-fault-source.

    Ejemplo de error 500 del registro de acceso de NGINX:

    ( ver imagen más grande)

    La entrada de ejemplo anterior del registro de acceso de NGINX tiene los siguientes valores para X-Apigee-fault-code y X-Apigee-fault-source:

    Encabezados Valor
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target

Causa: error en el servidor de backend

Diagnóstico

El 500 Internal Server Error que respondió el servidor de backend puede causado por varias razones. Deberás diagnosticar cada situación de manera independiente.

  1. Determinar Fault Code, Fault Source para el error observado con la supervisión de API. la Herramienta de seguimiento o los registros de acceso de NGINX, como se explica en Pasos de diagnóstico comunes.
  2. Si Fault Source es target y Fault Code es messaging.adaptors.http.flow.ErrorResponseCode, entonces eso indica que el servidor de backend devuelve el error.
  3. Puedes seguir uno de los siguientes pasos para diagnosticar la causa del problema:

    Trace

    Usa Trace:

    Si tienes una sesión de Trace para la falla, sigue estos pasos:

    1. En Trace, selecciona la solicitud a la API que falló con 500 Internal Server Error
    2. Selecciona la fase de Respuesta recibida del servidor de destino en con errores en la solicitud a la API, como se muestra en la siguiente figura:

      ( ver imagen más grande)

    3. Desplázate hacia abajo hasta la sección Detalles de la fase y verifica el Contenido de respuesta,que contiene la respuesta del servidor de backend.

      Ejemplo de contenido de una respuesta:

      <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>
      

      En la respuesta anterior, ten en cuenta que el mensaje de error del servidor backend No autorizado. Esto indica que es posible que el usuario haya pasado una credenciales y, por eso, reciben este error.

    Llamar al servidor de backend

    Realiza una llamada directa al servidor de backend:

    Puedes realizar una llamada directa al servidor de backend y hacer lo siguiente:

    • Verifica si obtienes el mismo 500 Internal Server Error respuesta tal como se recibió cuando la solicitud se realizó a través de Apigee Edge
    • Revisa el mensaje de error (respuesta) recibido del servidor backend

    Realiza los siguientes pasos para realizar la llamada directa al servidor backend:

    1. Asegúrate de tener todos los encabezados, los parámetros de consulta y cualquier credenciales que se deben pasar al servidor de backend como parte de la solicitud.
    2. Si el servicio de backend es de acceso público, puedes usar el curl, Postman o cualquier otro cliente REST y, luego, invoca el directamente a la API del servidor de backend.
    3. Si solo se puede acceder al servidor backend desde Message Processors, puedes usa el comando curl, Postman o cualquier otro cliente REST y, luego, invoca la API del servidor de backend directamente desde Message Processor.

    4. Valida si el servicio de backend muestra 500 Internal Server Error y verifica el mensaje de error (respuesta) que muestra el servidor de backend. determinar la causa de este error.

    Registros del servidor de backend

    Usa registros del servidor de backend

    1. Revisa los registros del servidor de backend e intenta obtener más detalles sobre el error y su causa.
    2. Si es posible, habilita el modo de depuración en el servidor de backend para obtener más detalles. sobre el error y la causa.
  4. Comprueba si estás usando encadenamiento de proxy en el extremo de destino específico del proxy de API con errores. es decir, si el servidor/extremo de destino invoca a otro proxy en Apigee Edge Para determinarlo:

    1. Si tienes el registro de la solicitud que falló, navega hasta Solicitud enviada. para orientar al servidor y haz clic en Show Curl.

    2. Se abrirá la ventana Curl for Request Sent to Target Server, desde donde podrás determina el alias del host del servidor de destino.
    3. Revisa el extremo de destino de tu proxy de API y comprueba si el servidor de backend La URL o el nombre de host en el servidor de destino apunta a otro proxy o al tuyo de backend.
    4. Si el alias del host del servidor de destino apunta a un alias de host virtual, este es el encadenamiento de proxy. En este caso, debes repetir todos los pasos anteriores para el hasta que determines cuál es la causa real de 500 Internal Server Error. En estos casos, 500 Internal Server Error podría suceden en otros proxies encadenados en otras etapas que pueden diagnosticarse se resuelven con las instrucciones proporcionadas en esta guía o en la 500 (Guía de errores internos del servidor).
    5. Si el alias del host del servidor de destino apunta a tu servidor de backend, dirígete a Resolución.

Solución

Si se determina que el error 500 proviene del servidor backend, entonces y trabaje con su equipo de servidor de backend para solucionar el problema.

En el ejemplo anterior, es posible que debas solicitar a los usuarios credenciales válidas para corregir este problema.

Puntos clave para tener en cuenta

  1. El mensaje de error real que muestra el servidor de backend para 500 Internal Server Error solo se puede ver si capturaste la sesión de registro de la falla solicitudes.
  2. La respuesta del servidor backend no se registrará en la supervisión de API, en los registros de acceso de NGINX ni en Registros del procesador de mensajes por motivos de seguridad.
  3. Puedes revisar los registros del servidor de backend o habilitar el modo de depuración en el backend para obtener más detalles sobre 500 Internal Server Error o ver el mensaje de error que se muestra por el servidor de backend.

Se debe recopilar información de diagnóstico

Si el problema persiste, incluso después de seguir las instrucciones anteriores, reúne la siguiente información de diagnóstico y comunícate con el equipo de asistencia de Apigee Edge.

Si eres usuario de la nube pública, proporciona la siguiente información:

  • Nombre de la organización
  • Nombre del entorno
  • Nombre del proxy de API
  • Completa el comando curl para reproducir el error 500
  • Archivo de seguimiento que contiene las solicitudes con 500 Internal Server Error
  • Si los errores 500 no se producen en ese momento, proporciona la hora. período con la información de la zona horaria cuando se produjeron errores 500 en el pasado.

Si eres un usuario de la Nube privada, proporciona la siguiente información:

  • Mensaje de error completo observado para las solicitudes fallidas
  • Organización, nombre del entorno y nombre del proxy de API que está observando 500 de errores
  • Paquete de proxy de API
  • Archivo de seguimiento que contiene las solicitudes con 500 Internal Server Error
  • Registros de acceso de NGINX /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    Dónde: ORG, ENV y PORT# se reemplazan por valores reales.

  • Registros del sistema del procesador de mensajes /opt/apigee/var/log/edge-message-processor/logs/system.log
  • El período con la información de la zona horaria en el que se produjeron los errores 500.