503 Service Available - Backend Server

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Videos

Mira el siguiente video para obtener más información sobre cómo resolver los errores 503 de servicio no disponible.

Video Descripción
Error 503 Servicio no disponible del servidor de backend Obtén información sobre lo siguiente:
  • Introducción al error 503 Servicio no disponible en Apigee Edge
  • Solución de problemas y resolución de un servicio 503 en tiempo real no disponible desde el servidor de backend

Síntoma

La aplicación cliente recibe un estado de respuesta HTTP 503 con el mensaje Servicio no disponible después de una llamada de proxy de API.

Mensajes de error

Verás uno de los siguientes mensajes de error:

HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

También puedes ver un mensaje de error como el siguiente en la respuesta HTTP:

The server is temporarily unable to service your request due to
maintenance downtime or capacity problems. Please try again later.

Nota: El código de respuesta y el mensaje de error anteriores son solo ejemplos. En algunos casos, es posible que recibas solo el código de respuesta de error sin ningún mensaje de error. El formato, el contenido del código de respuesta de error y el mensaje de error pueden variar según la implementación del servidor de backend.

Causas

El código de estado HTTP 503 significa que el servidor no puede administrar las solicitudes entrantes en este momento. Por lo general, este error ocurre porque el servidor está demasiado ocupado o está temporalmente inactivo por mantenimiento.

Las posibles causas de la respuesta 503 Service AVAILABLE son las siguientes:

Causa Descripción Quién puede realizar los pasos para solucionar problemas
Servidor sobrecargado El servidor de backend está sobrecargado o supera su capacidad, y no puede manejar ninguna solicitud entrante nueva de clientes. Usuarios de la nube pública y privada de Edge
Servidor en mantenimiento Es posible que el servidor de backend esté en mantenimiento temporalmente. Usuarios de la nube pública y privada de Edge

Causa: servidor o servidor sobrecargado en mantenimiento

En Apigee Edge, el error 503 de servicio no disponible se puede mostrar desde un servidor de backend en cualquiera de las siguientes circunstancias:

  • Un servidor de backend está sobrecargado o ocupado y no puede manejar ninguna solicitud nueva.
  • El servidor de backend está inactivo por un período temporal debido a tareas de mantenimiento.

Diagnóstico

Para diagnosticar el error, puedes usar cualquiera de los siguientes tres métodos:

  • Herramienta de seguimiento
  • Registros de acceso de NGINX
  • Llamada directa al servidor de backend

Haz clic en las pestañas que aparecen a continuación para obtener más información sobre cada método.

Herramienta de seguimiento

  1. Habilita la sesión de seguimiento y realiza la llamada a la API para reproducir el problema: 503 Servicio no disponible.
  2. Selecciona una de las solicitudes con errores y examina el seguimiento.
  3. Navega por las distintas fases del seguimiento y localiza dónde se produjo la falla.
  4. Si descubres que el error 503 se muestra como una respuesta del servidor de destino, la causa del error 503 es el servidor de destino.

    A continuación, se muestra una captura de pantalla de seguimiento de muestra en la que se muestra la respuesta 503 Servicio no disponible del servidor de destino:

  5. Haz clic en la fase Respuesta recibida del servidor de destino y revisa las secciones Encabezados de respuesta y Contenido de la respuesta para ver si tienen información útil:
    • Los encabezados de respuesta pueden contener el encabezado del servidor, que indica desde dónde se envió la respuesta de error.
    • El contenido de la respuesta puede contener información adicional sobre por qué el servidor de destino envió el código de respuesta 503.
  6. Para confirmar que el error 503 provenga del servidor de destino, verifica los valores de X-Apigee-fault-source y X-Apigee-fault-code en la fase AX (datos de Analytics registrados) del seguimiento mediante los pasos que se indican a continuación:
    1. Haz clic en AX (Analytics Data Recorded) Phase, como se muestra en la siguiente captura de pantalla:
    2. Desplázate hacia abajo en la sección Detalles de la fase hasta la sección Encabezados de respuesta y determina los valores de X-Apigee-fault-code y X-Apigee-fault-source como se muestra a continuación:
    3. Si los valores de X-Apigee-fault-source y X-Apigee-fault-code coinciden con los valores que se muestran en la siguiente tabla, puedes confirmar que el error 503 provenga del servidor de destino:
      Encabezados de respuesta Valor
      X-Apigee-fault-source objetivo
      X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  7. Verifica si usas el encadenamiento de proxy, es decir, si el servidor o extremo de destino invoca a otro proxy en Apigee. Para determinarlo, sigue estos pasos:
    1. Regresa a la fase Solicitud enviada al servidor de destino y haz clic en el botón Show Curl y determina el alias del host del servidor de destino.
    2. Si el alias del host del servidor de destino apunta a un alias de host virtual, es un encadenamiento de proxy. En este caso, debes repetir todos los pasos anteriores para el proxy en cadena hasta determinar la causa del error 503 Servicio no disponible. En estos casos, el error 503 del servicio no disponible también puede ocurrir en otros proxies encadenados en otras etapas, lo que se puede diagnosticar con esta guía.
    3. Si el alias del host del servidor de destino apunta a tu servidor de backend, ve a Resolución.

Registros de acceso de NGINX

También puedes consultar los registros de lccess de NGINX para determinar si el servidor de backend envió el código de estado 503. Esto es muy útil si el problema ocurrió en el pasado o si es intermitente y no puedes capturar el registro en la IU. Sigue estos pasos para determinar esta información a partir de los registros de acceso de NGINX:

  1. Verifica los registros de acceso de NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. Busca cualquier error 503 del proxy de API específico durante un período específico (si el problema ocurrió en el pasado) o cualquier solicitud que aún tenga errores con el 503.
  3. Si hay errores 503, verifica si el error proviene del servidor de backend. Si los valores de X-Apigee-fault-source y X-Apigee-fault-code coinciden con los valores que se muestran en la siguiente tabla, el error 503 proviene del servidor de backend:
    Encabezados de respuesta Valor
    X-Apigee-fault-source objetivo
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode

    A continuación, se muestra una entrada de ejemplo que muestra el error 503 que generó el servidor de destino:

  4. Revisa el proxy de API específico y asegúrate de usar encadenamiento de proxy, es decir, si el servidor o extremo de destino no invoca otro proxy en Apigee Si usas el encadenamiento de proxy, debes repetir todos los pasos anteriores para el proxy en cadena hasta que determines qué causa el error 503 Servicio no disponible. En estos casos, el error 503 del servicio no disponible también puede ocurrir en otros proxies en cadena en otras etapas, lo que puedes diagnosticar con esta guía.
  5. Si confirmas que no usas el encadenamiento de proxy y que el error 503 proviene de tu servidor de backend, ve a Resolución.

Llamada al servidor de backend

Puedes realizar una llamada directa al servidor de backend y verificar que estás recibiendo la misma respuesta 503 Servicio no disponible que recibiste cuando se realizó la solicitud a través de Apigee Edge.

  1. Asegúrate de tener todos los encabezados, parámetros de consulta y 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 comando curl, Postman o cualquier otro cliente de REST y, luego, invocar directamente la API del servidor de backend.
  3. Si solo se puede acceder al servidor de backend desde Message Processor, puedes usar el comando curl, Postman o cualquier otro cliente de REST y, luego, invocar la API del servidor de backend directamente desde Message Processor.
  4. Verifica que el servicio de backend muestre el error 503 Servicio no disponible.

Resolución

Si determinas que el error 503 proviene del servidor de backend, puedes hacer lo siguiente para resolver el problema:

  • Si el problema se debe a que el servidor de backend está inactivo por mantenimiento, puedes conectarlo en línea después del período de mantenimiento.
  • Si el problema se debe a que el servidor de backend está sobrecargado, corrígelo si tienes acceso al servidor de backend. De lo contrario, es posible que debas trabajar con el equipo de tu servidor de backend para solucionar el problema.

Diagnostica problemas con la supervisión de API

La supervisión de API te permite aislar las áreas problemáticas con rapidez a fin de diagnosticar errores, rendimiento y problemas de latencia y su fuente, como apps para desarrolladores, proxies de API, objetivos de backend o la plataforma de API.

Analiza una situación de ejemplo en la que se demuestra cómo solucionar problemas 5xx de tus APIs con la supervisión de API. Por ejemplo, es posible que desees configurar una alerta para que se te notifique cuando la cantidad de fallas de messages.adaptors.http.flow.ErrorResponseCode exceda un umbral específico.

Se debe recopilar información de diagnóstico

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

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

  • Nombre de la organización
  • Nombre del entorno
  • Nombre de proxy de API
  • Completa el comando curl para reproducir el error 503
  • Archivo de seguimiento que contiene las solicitudes con el error 503 Service Available
  • Si no ocurren los errores 503 actualmente, proporciona el período con la información de la zona horaria en la que se produjeron errores 503 en el pasado.

Si eres usuario de una nube privada, proporciona la siguiente información:

  • Mensaje de error completo observado para las solicitudes con errores.
  • Organización, nombre del entorno y nombre de proxy de API para los que observas errores 503.
  • Paquete de proxy de API.
  • Archivo de seguimiento que contiene las solicitudes con el error 503 Servicio no disponible.
  • Registros de acceso de NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  • Registros de Message Processor.
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Indica el período con la información de la zona horaria en el que se produjeron los errores 503.