503 Service Available - Backend Server

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

Videos

Mira el siguiente video para obtener más información sobre cómo resolver errores de 503 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 error 503 Servicio no disponible en tiempo real de 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 al proxy de API.

Mensajes de error

Es posible que veas 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 es posible que veas 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 solo recibas el código de respuesta de error sin ningún mensaje de error. El formato y 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 controlar las solicitudes entrantes en este momento. Por lo general, este error se produce porque el servidor está demasiado ocupado o no funciona temporalmente por mantenimiento.

Las posibles causas de la respuesta 503 Servicio no disponible son las siguientes:

Causa Descripción Quién puede realizar los pasos de solución de problemas
Servidor sobrecargado El servidor de backend está sobrecargado o supera su capacidad y no puede controlar ninguna solicitud de cliente entrante nueva. 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 sobrecargado o en mantenimiento

En Apigee Edge, el error 503 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 controlar ninguna solicitud nueva.
  • El servidor de backend no funciona durante un período temporal debido al mantenimiento.

Diagnóstico

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

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

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

Herramienta de Trace

  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 ubica dónde se produjo el error.
  4. Si descubres que el error 503 se muestra como respuesta del servidor de destino, la causa del error 503 es el servidor de destino.

    Esta es una captura de pantalla de seguimiento de muestra que muestra la respuesta 503 Servicio no disponible recibida 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 proviene del servidor de destino, verifica los valores de X-Apigee-fault-source y X-Apigee-fault-code en la fase AX (datos de estadísticas registrados) en el seguimiento con los pasos que se indican a continuación:
    1. Haz clic en la fase AX (datos de estadísticas registrados) como se muestra en la siguiente captura de pantalla: .
    2. Desplázate hacia abajo por los 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 proviene 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 el extremo de destino es invocando otro proxy en Apigee. Para determinar esto, haz lo siguiente:
    1. Vuelve a la fase Solicitud enviada al servidor de destino y haz clic en el botón Mostrar Curl y determina el alias de host del servidor de destino.
    2. Si el alias de host del servidor de destino apunta a un alias de host virtual, entonces es encadenamiento de proxy. En este caso, debes repetir todos los pasos anteriores para el proxy encadenado hasta que determines qué está causando realmente el error 503 Servicio no disponible. En estos casos, el error 503 Servicio no disponible también puede ocurrir en otros proxies encadenados en otras etapas, que se pueden diagnosticar con esta guía.
    3. Si el alias de host del servidor de destino apunta a tu servidor de backend, ve a Solución.

Registros de acceso de NGINX

También puedes consultar los registros de acceso de NGINX para determinar si el servidor de backend envió el código de estado 503. Esto es particularmente útil si el problema ocurrió en el pasado o si el problema es intermitente y no puedes capturar el seguimiento en la IU. Sigue estos pasos para determinar esta información 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 errores 503 para el proxy de API específico durante un período determinado (si el problema ocurrió en el pasado) o para cualquier solicitud que aún falle con 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

    Esta es una entrada de muestra que muestra el error 503 causado por el servidor de destino:

  4. Revisa el proxy de API específico y asegúrate de usar el encadenamiento de proxy es decir, si el servidor o el extremo de destino no invoca otro proxy en Apigee. Si usas el encadenamiento de proxy, debes repetir todos los pasos anteriores para el proxy encadenado hasta que determines qué está causando realmente el error 503 Servicio no disponible. En estos casos, el error 503 Servicio no disponible también puede ocurrir en otros proxies encadenados en otras etapas, que se pueden 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 Solución.

Llamada al servidor de backend

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

  1. Asegúrate de tener todos los encabezados, los parámetros de consulta y las credenciales necesarios que se deben pasar al servidor de backend como parte de la solicitud.
  2. Si se puede acceder al servicio de backend de forma pública, puedes usar el comando curl, Postman o cualquier otro cliente de REST y llamar a la API del servidor de backend directamente.
  3. Si solo se puede acceder al servidor de backend desde los Message Processors, puedes usar el comando curl, Postman o cualquier otro cliente de REST y llamar a la API del servidor de backend directamente desde el Message Processor.
  4. Verifica que el servicio de backend muestre el error 503 Servicio no disponible.

Solució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 no funciona por mantenimiento, puedes ponerlo en línea después del período de mantenimiento.
  • Si el problema se debe a que el servidor de backend está sobrecargado, entonces corrige el problema si tienes acceso al servidor de backend. De lo contrario es posible que debas trabajar con tu equipo del servidor de backend para corregir el problema.

Diagnostica problemas con la supervisión de API

La supervisión de API te permite aislar las áreas con problemas rápidamente para diagnosticar problemas de errores, rendimiento y latencia, y su fuente, como apps para desarrolladores, proxies de API, destinos de backend o la plataforma de API.

Consulta una situación de ejemplo que muestra cómo solucionar problemas de 5xx con tus APIs mediante la supervisión de API. Por ejemplo, es posible que desees configurar una alerta para recibir una notificación cuando la cantidad de errores de messaging.adaptors.http.flow.ErrorResponseCode supere un umbral determinado.

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 Asistencia de Apigee.

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
  • Comando curl completo para reproducir el error 503
  • Archivo de seguimiento que contiene las solicitudes con el error 503 Servicio no disponible
  • Si los errores 503 no ocurren actualmente, proporciona el período con la información de la zona horaria en la que ocurrieron los errores 503 en el pasado.

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

  • Mensaje de error completo observado para las solicitudes con errores
  • Organización, nombre del entorno y nombre del 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 del Message Processor
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • El período con la información de la zona horaria en la que ocurrieron los errores 503