Cuando un gateway nativo de la nube reenvía solicitudes a servicios de backend, los backends lentos o sin respuesta pueden mantener las conexiones abiertas indefinidamente. Esto agota los recursos del gateway y degrada la experiencia de otros clientes. Una directiva de tiempo de espera establece el tiempo máximo que el gateway espera una respuesta del backend en una ruta específica. Si el backend no responde dentro de este periodo, el gateway devuelve HTTP 504 (Gateway Timeout) al cliente.
Las directivas de tiempo de espera se configuran por ruta. Establezca tiempos de espera más cortos para API sensibles a la latencia y tiempos más largos para endpoints de procesamiento por lotes o cómputo intensivo.
Funcionamiento
Al habilitar una directiva de tiempo de espera en una ruta, el gateway inicia un temporizador después de reenviar la solicitud al servicio de backend.
Si el backend no devuelve una respuesta dentro del periodo de tiempo de espera configurado, el gateway devuelve HTTP 504 (Gateway Timeout) al cliente.
A continuación, la tabla resume el comportamiento para los distintos valores de tiempo de espera:
|
Valor de tiempo de espera |
Comportamiento del gateway |
|
Mayor que |
Espera hasta el número especificado de segundos una respuesta del backend. Devuelve |
|
|
Espera indefinidamente. Utilice esta opción solo para API de streaming u operaciones de larga duración. |
Establecer el periodo de tiempo de espera en 0 tiene el mismo efecto que deshabilitar la directiva. Para la mayoría de las API de solicitud-respuesta, establezca un tiempo de espera explícito para evitar el agotamiento de recursos.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una instancia de gateway nativo de la nube en Microservices Engine (MSE)
Como mínimo una ruta configurada en el gateway
Configure una directiva de tiempo de espera
Inicie sesión en la consola de MSE. En la barra de navegación superior, seleccione una región.
En el panel de navegación izquierdo, elija Cloud-native Gateway > Gateways. En la página Gateways, haga clic en el ID del gateway.
En el panel de navegación izquierdo, haga clic en Routes. A continuación, haga clic en la pestaña Routes.
Busque la ruta que desea modifique y haga clic en Policies en la columna Actions.
Haga clic en la pestaña Timeout.
-
Configure los siguientes parámetros y haga clic en Save.
Parámetro
Descripción
Timeout Period
Tiempo máximo que el gateway espera una respuesta del backend, en segundos. Un valor de
0significa que el gateway espera indefinidamente.Enable
Activa o desactiva la directiva. Cuando el interruptor está activado, la directiva de tiempo de espera surte efecto. Cuando está desactivado, el gateway espera indefinidamente, como si no hubiera ningún tiempo de espera configurado.
Compruebe la directiva de tiempo de espera
Después de habilite la directiva de tiempo de espera, envíe una solicitud de prueba a la ruta y confirme lo siguiente:
Las solicitudes que se completan dentro del periodo de tiempo de espera devuelven la respuesta esperada.
Las solicitudes que superan el periodo de tiempo de espera devuelven HTTP
504 (Gateway Timeout).
Recomendaciones para producción
Al despliegue directivas de tiempo de espera en un entorno de producción, considere lo siguiente:
Mida primero los tiempos de respuesta reales. Antes de establecer un tiempo de espera, recopile métricas de latencia base (p50, p95, p99) del servicio de backend. Configure el tiempo de espera por encima de la latencia p99 para evitar errores
504innecesarios bajo carga normal.Evite deshabilitar los tiempos de espera en rutas de solicitud-respuesta. Establecer el tiempo de espera en
0o deshabilitar la directiva provoca que el gateway espere indefinidamente. Reserve esta configuración para rutas que sirven respuestas de streaming u operaciones de larga duración (como carga de archivo o generación de informes).