Capacidad

Perfiles de Timeout

Gestione 9 valores de timeout distintos bajo un único perfil y aplique el comportamiento de espera correcto por pool para tráfico web, API, WebSocket, long-poll y de carga.

TR7 Perfiles de Timeout no reduce la gestión de timeout a una única configuración de tiempo de inactividad. HTTP keepalive, HTTP request, connect, server, client, queue, tunnel, clientFIN y serverFIN — 9 ejes de timeout independientes — se agrupan en un único objeto de perfil. Cada timeout gobierna un problema de producción diferente. El tráfico de API se beneficia de timeouts cortos de connect y server, mientras que un endpoint de long-polling necesita un serverTimeout mayor. Una conexión WebSocket requiere que tunnelTimeout se gestione por separado del HTTP keepalive; de lo contrario, las conexiones de larga duración se caen inesperadamente. Los operadores crean sus propios perfiles con nombre — web, api, websocket, longpoll, upload o defensive — y los vinculan a los pools relevantes. Cuando un perfil cambia, cada pool vinculado a ese perfil hereda automáticamente el mismo estándar de timeout. El resultado: TR7 saca la gestión de timeout de las anulaciones dispersas por pool y hace que la duración de la conexión, la protección contra clientes lentos, el tiempo de espera del backend, el comportamiento de cola y la estabilidad de WebSocket sean gobernables a través de un único modelo de perfil.

9
Ejes de timeout independientes en un único perfil
60.000
Rango configurable en segundos (más de 16 horas)
0
Presets integrados — cada perfil lo define el operador

Los timeouts mal configurados producen interrupciones silenciosas, desconexiones fantasma y esperas innecesarias en producción.

Cuando un timeout está configurado incorrectamente, el fallo no siempre es obvio. Si un serverTimeout se fija en 30 segundos, las solicitudes de long-polling devuelven 504. Si el connectTimeout es demasiado largo, los clientes que esperan llegar a un backend caído se bloquean durante segundos antes de reintentar — desencadenando cascadas de reintentos. Si el tunnelTimeout es demasiado corto, las conexiones WebSocket se caen sin motivo y los usuarios experimentan desconexiones fantasma.

La mayoría de los sistemas presentan la configuración de timeout como una lista plana. Los operadores no pueden distinguir claramente qué valor controla la fase de solicitud HTTP, cuál gobierna el tiempo de respuesta del backend, cuál aplica a los túneles WebSocket y cuál afecta a la espera FIN. El resultado es que todos los valores se establecen demasiado altos — creando fugas de conexión — o todos demasiado bajos, cortando el tráfico legítimo de usuarios.

WebSocket y las conexiones de larga duración son donde este problema es más visible. El HTTP keepalive es significativo en el rango de 30–120 segundos, pero una sesión WebSocket puede permanecer abierta durante horas. Sin un tunnelTimeout gestionado por separado, las aplicaciones en tiempo real están restringidas por el comportamiento de inactividad HTTP ordinario.

El comportamiento de teardown TCP también importa. Cuando clientFIN y serverFIN no están controlados, las conexiones semi-cerradas pueden agotar el pool de descriptores de archivo. En los servicios de cara al público, esto se combina con patrones de ataque slow-close y se convierte en un problema de agotamiento de recursos.

TR7 Perfiles de Timeout reúne 9 ejes de timeout independientes en un único perfil con nombre, asegurando que cada pool aplique el comportamiento de espera, drain y cierre de conexión correcto para su tipo de tráfico.

Nuestro enfoque

TR7 gestiona los timeouts a través de perfiles reutilizables con nombre en lugar de dispersar configuraciones individuales entre pools.

Los perfiles con nombre se crean y vinculan a los pools

Un operador define un nombre de perfil y agrupa 9 valores de timeout dentro de él. El mismo perfil puede vincularse a múltiples pools, dando a los pools web, API o WebSocket un estándar de timeout compartido consistente.

Los ejes HTTP, TCP, queue, tunnel y FIN se mantienen separados

HTTP request, keepalive, connect, server, client, queue, tunnel, clientFIN y serverFIN se gestionan cada uno como un campo distinto. Cada campo se ajusta según su propia semántica de tráfico; ningún valor de timeout se usa como sustituto de otro.

El timeout del túnel WebSocket es independiente del HTTP keepalive

Las conexiones de larga duración como WebSocket y HTTP CONNECT se gestionan a través de tunnelTimeout de forma separada. Las conexiones de chat, live-streaming y event-stream no se ven restringidas por el temporizador de inactividad HTTP y no se cerrarán innecesariamente.

clientFIN y serverFIN limitan las conexiones semi-cerradas

El tiempo que se mantiene una conexión después de una señal de cierre TCP se configura de forma independiente para los lados del cliente y del servidor. Esto reduce el riesgo de consumo de recursos estilo FIN-WAIT y permite políticas de drain más agresivas en los servicios de cara al público.

Capacidades

Los Perfiles de Timeout permiten a los operadores ajustar con precisión la duración de la conexión y el comportamiento de espera en 9 campos independientes para adaptarse a cada tipo de tráfico.

httpKeepaliveTimeout controla cuánto tiempo permanece abierta una conexión HTTP inactiva

httpKeepaliveTimeout define cuánto tiempo permanece abierta una conexión keep-alive HTTP/1.1 entre solicitudes. El valor predeterminado es 120 segundos. Establecerlo demasiado alto desperdicia recursos en conexiones inactivas; demasiado bajo aumenta el coste de reconexión. Se ajusta según el presupuesto de conexiones inactivas del backend.

httpRequestTimeout limita la entrega lenta de headers y reduce el riesgo de slowloris

httpRequestTimeout es el tiempo permitido para que el cliente complete la línea de solicitud y los headers. El valor predeterminado es 30 segundos. Los clientes que envían headers muy lentamente pueden cortarse en este umbral. Es un punto de defensa importante contra los patrones de estilo slowloris en los servicios de cara al público.

connectTimeout gobierna el tiempo de espera de conexión TCP al backend

connectTimeout define cuánto tiempo espera TR7 al establecer una conexión TCP a un backend. El valor predeterminado es 20 segundos. Si se establece demasiado largo, un backend caído o inalcanzable bloquea a los clientes innecesariamente. Los escenarios de API que requieren respuestas de fallo rápido se benefician de un connectTimeout más bajo.

serverTimeout establece cuánto tiempo esperar una respuesta del backend

serverTimeout es el tiempo permitido para que el backend produzca una respuesta. El valor predeterminado es 90 segundos. Puede establecerse bajo para APIs rápidas y elevarse para endpoints de reporting pesado, long-polling o consultas lentas. Un valor incorrectamente bajo causa que solicitudes funcionando pero lentas reciban 504.

clientTimeout controla el comportamiento de espera cuando se esperan datos del cliente

clientTimeout es el tiempo de espera para que los datos lleguen del cliente. Se aplica a la carga del cuerpo de solicitud, las solicitudes en pipeline y los escenarios de cliente lento. El valor predeterminado es 90 segundos. Puede elevarse para cargas de archivos grandes y bajarse para reducir el riesgo de clientes lentos en APIs públicas.

queueTimeout limita cuánto tiempo espera un cliente cuando el pool está al máximo de capacidad

queueTimeout define cuánto tiempo espera una solicitud en la cola del pool cuando la capacidad de conexión está llena. El valor predeterminado es 60 segundos. Cuando se supera, la solicitud se devuelve con un error y el cliente no queda retenido indefinidamente. Este valor debe considerarse junto con los límites maxconn y los SLA de la aplicación.

tunnelTimeout gestiona las conexiones WebSocket y de túnel HTTP por separado

tunnelTimeout define el tiempo de inactividad para las conexiones de túnel WebSocket y HTTP CONNECT. El valor predeterminado es 120 segundos; para aplicaciones en tiempo real esto puede elevarse a 3600 segundos o más. Dado que este timeout es independiente del HTTP keepalive, las conexiones de larga duración no se ven restringidas por la configuración de tráfico web. Es crítico para aplicaciones de chat, notificaciones en vivo y stream.

clientFIN controla cuánto tiempo se mantiene una conexión después de que el cliente la cierra

clientFIN establece cuánto tiempo se mantiene la conexión después de una señal FIN del cliente. El valor predeterminado es 3 segundos. Los valores más bajos evitan que las conexiones semi-cerradas consuman descriptores de archivo. Esto es especialmente importante en los servicios de cara al público para reducir la presión de recursos FIN-WAIT.

serverFIN gestiona el tiempo de drain elegante cuando el backend cierra

serverFIN limita el comportamiento de la conexión después de una señal FIN del backend. El valor predeterminado es 6 segundos. Mantener serverFIN más alto que clientFIN permite más tolerancia para el drain elegante durante el cierre del backend. Esta configuración afecta directamente la calidad del cierre de conexión en pools de backend de alto tráfico.

El mismo perfil de timeout puede vincularse a múltiples pools

El modelo de vinculación perfil-pool permite compartir el mismo estándar de timeout entre múltiples pools. Todos los pools web pueden apuntar al perfil web, los pools de API al perfil api y los pools WebSocket al perfil websocket. Un único cambio de perfil actualiza de forma centralizada el comportamiento de timeout de cada pool vinculado a él, reduciendo la duplicación y la deriva de la configuración.

El pipeline de generación nativo traduce los campos del perfil en directivas de timeout en tiempo de ejecución

Los 9 campos del perfil se convierten en las directivas de timeout en tiempo de ejecución correspondientes — connect, server, client, queue, tunnel, http-keep-alive, http-request, client-fin y server-fin. Los operadores gestionan los valores a través del perfil en lugar de escribir directivas individuales, creando un puente consistente entre la GUI y el comportamiento en tiempo de ejecución.

El timeout de comprobación de salud permanece como un control separado fuera del perfil de tráfico

El timing de comprobación de salud se gestiona a través de su propio campo de timeout y es independiente del perfil de timeout de tráfico. Esta separación importa: la latencia de sonda y el comportamiento de espera del tráfico de producción no se mezclan. Una comprobación de salud del backend puede mantenerse corta mientras el serverTimeout del endpoint real permanece largo, permitiendo monitorear la salud del servicio y el tráfico de usuarios con diferentes semánticas.

Profundidad operacional

Los perfiles de timeout se operan junto con su rango de valores, valores predeterminados, soporte decimal, semántica de túneles, balance FIN y modelo de vinculación de pools.

01

Rango de valores

Los campos de timeout son configurables de 0 a 60.000 segundos. Este rango abarca desde configuraciones defensivas de subsegundo hasta sesiones superiores a 16 horas, proporcionando suficiente flexibilidad para los requisitos de long-poll y conexiones persistentes.

02

Soporte decimal

httpKeepaliveTimeout acepta valores decimales. Un valor como 0,5 segundos permite un comportamiento de keepalive inactivo más preciso. Los 8 campos de timeout restantes se tratan como segundos en números enteros.

03

Valores predeterminados seguros para producción

Los valores predeterminados proporcionan un punto de partida seguro adecuado para la mayoría del tráfico web y de API. httpKeepaliveTimeout 120, httpRequestTimeout 30, connectTimeout 20, serverTimeout 90, clientTimeout 90, queueTimeout 60, tunnelTimeout 120, clientFIN 3 y serverFIN 6 segundos son líneas base apropiadas. Para tipos de tráfico especializados, estos valores deben ajustarse por perfil.

04

Semántica de túneles

tunnelTimeout aplica a conexiones de túnel como WebSocket y HTTP CONNECT. No es lo mismo que el timeout de solicitud HTTP o de keepalive. Establecerlo demasiado bajo en conexiones de larga duración produce problemas de desconexión.

05

Balance FIN

En el modelo predeterminado, serverFIN es más tolerante que clientFIN. Esto deja más margen para el drain elegante durante el cierre del backend. En los servicios de cara al público, ambos valores pueden establecerse de forma más agresiva para reducir el consumo de recursos de conexiones semi-cerradas.

06

Perfiles con nombre en lugar de presets

TR7 no impone presets predefinidos. Los operadores crean sus propios perfiles con nombre según su escenario — web, api, websocket, longpoll o upload pueden definirse para adaptarse a los estándares de la organización. Se prefiere vincular un pool al perfil apropiado sobre las anulaciones individuales por servicio.

Cuándo usarlo

Perfil de timeout equilibrado para aplicaciones web estándar

Puede crearse un perfil web cercano a los valores predeterminados. El keepalive preserva la experiencia del usuario mientras los valores de timeout de request y FIN limitan las conexiones lentas o semi-cerradas. El mismo perfil puede vincularse a múltiples pools web.

Larga duración de túnel WebSocket para chat en tiempo real

Las aplicaciones de chat necesitan que las conexiones WebSocket permanezcan abiertas sin caídas frecuentes. Dentro de un perfil websocket, tunnelTimeout se establece en un valor largo como 3600 segundos mientras los demás timeouts HTTP permanecen en sus valores predeterminados. Las conexiones de larga duración ya no se ven restringidas por la ventana de HTTP keepalive.

serverTimeout elevado para APIs de long-polling

Un endpoint de long-polling puede esperar varios minutos para que el backend responda. Establecer serverTimeout a 300 segundos en un perfil longpoll soporta una ventana de espera de 5 minutos. Sin esto, un timeout de API estándar corta las solicitudes demasiado pronto.

clientTimeout extendido para cargas de archivos grandes

Los datos del cliente pueden llegar lentamente durante el tráfico de cuerpo POST grande o de carga de archivos. En un perfil upload, clientTimeout y, si es necesario, httpRequestTimeout pueden elevarse a 600 segundos. Esto evita que las operaciones de carga legítimas pero lentas sean cortadas.

Perfil de timeout agresivo para una API bancaria rápida

Cuando una API bancaria espera una respuesta rápida del backend, pueden usarse valores estrictos como connectTimeout 2 segundos y serverTimeout 5 segundos. Un backend lento o caído no bloquea a los clientes por mucho tiempo. El comportamiento de reintento y failover se activa antes.

Perfil de defensa contra ataques lentos para web de cara al público

Un perfil defensivo puede usar valores bajos como httpRequestTimeout 5 segundos y clientFIN/serverFIN 1 segundo. Esta estructura limita la entrega lenta de headers y los patrones de consumo de conexiones semi-cerradas. Reduce la superficie de ataque en los servicios de cara al público.

Preguntas frecuentes

¿Qué controla cada uno de los 9 campos de timeout?
Cada campo gobierna una fase de conexión diferente. httpKeepaliveTimeout y httpRequestTimeout cubren la capa HTTP; connectTimeout, serverTimeout y clientTimeout gobiernan el establecimiento TCP y el tiempo de espera de la aplicación; queueTimeout gestiona la saturación del pool; tunnelTimeout maneja los túneles WebSocket y HTTP CONNECT; clientFIN y serverFIN controlan el comportamiento de teardown TCP. La semántica de cada campo difiere — usar uno como sustituto de otro produce fallos silenciosos en producción.
¿Por qué las conexiones WebSocket necesitan un perfil de timeout separado?
El timeout de HTTP keepalive es significativo en el rango de 30–120 segundos, pero una sesión WebSocket puede permanecer abierta durante horas. tunnelTimeout define una duración independiente para los túneles HTTP CONNECT y WebSocket, separada del HTTP keepalive. Sin esta separación, las aplicaciones en tiempo real se ven restringidas por la ventana de inactividad HTTP ordinaria y experimentan frecuentes desconexiones fantasma.
¿Por qué importan los valores de clientFIN y serverFIN desde una perspectiva de seguridad?
Mantener las conexiones abiertas demasiado tiempo después de una señal de cierre TCP permite que las conexiones semi-cerradas agoten el pool de descriptores de archivo. En los servicios de cara al público, esto puede combinarse con patrones de ataque slow-close para convertirse en un vector de agotamiento de recursos. Los valores predeterminados son clientFIN 3 segundos y serverFIN 6 segundos; estos pueden bajarse de forma más agresiva en perfiles defensivos.
¿Cómo se vincula el mismo perfil a múltiples pools?
El operador asigna un nombre al perfil y hace referencia a ese nombre en la configuración de cada pool relevante. Un perfil puede vincularse a cualquier número de pools — los perfiles llamados web, api o websocket aplican el mismo estándar de timeout a todos los pools asociados. Un único cambio en el perfil actualiza de forma centralizada el comportamiento de cada pool vinculado a él.
¿Cuál es la diferencia entre serverTimeout y queueTimeout?
serverTimeout es el tiempo permitido para que el backend produzca una respuesta después de que se ha establecido una conexión. queueTimeout es el tiempo que una solicitud espera en la cola del pool antes de que se establezca una conexión en absoluto. Cubren fases diferentes y no pueden sustituirse mutuamente. Ambos deben ajustarse junto con los límites maxconn y los SLA de la aplicación.
¿Hay plantillas de perfil de timeout integradas?
TR7 no impone presets integrados. Los operadores crean perfiles con nombre para adaptarse a sus propios escenarios — nombres como web, api, websocket, longpoll o upload pueden definirse para ajustarse a los estándares organizacionales. Este enfoque permite que cada entorno defina sus propios perfiles en lugar de forzar un único modelo de configuración para todos los tipos de tráfico.

Modele la gestión de timeout para adaptarse a sus tipos de tráfico

Perfiles de timeout de 9 ejes con nombre para sus pools web, API, WebSocket y de carga. Déjenos guiarle por una configuración en vivo con su propia configuración.