🔐 Límites de Conexión HTTP y Protección contra Sobrecarga
- Fecha de publicación: 18 de junio de 2026
- Versión requerida: Plugin Core / Framework 11.261.9411
La versión 26 de RUB introduce un sistema avanzado de gestión y limitación de conexiones simultáneas en el servidor HTTP Jetty. Esta mejora fue desarrollada para aumentar la estabilidad y la resiliencia de la plataforma en escenarios de alta demanda, evitando que el servidor quede no disponible o sufra degradación de desempeño cuando se somete a picos de tráfico.
El nuevo mecanismo actúa de forma proactiva, controlando el número de conexiones activas con base en la configuración de threads del servidor. De esta forma, RUB logra mantener respuestas controladas incluso bajo carga máxima, retornando el estado HTTP 503 (Service Unavailable) de manera previsible y sin comprometer el funcionamiento interno de la aplicación.
Cómo funciona el control de conexiones
El sistema calcula automáticamente el límite de conexiones “normales” con base en el parámetro http.maxThreads. Se reservan 8 threads para el funcionamiento interno de Jetty (Acceptors, Selectors y tareas de housekeeping), garantizando que el servidor nunca agote completamente sus recursos. Además, se mantienen permanentemente 3 slots de conexión reservados exclusivamente para solicitudes dirigidas a rutas que inician con /debug/, asegurando que las herramientas de diagnóstico y monitoreo continúen accesibles incluso en situaciones de sobrecarga.
Tipos de limitación implementados
- Límite Global (Normal): Se aplica a todas las solicitudes que no son de debug. Al alcanzar el límite calculado, las nuevas solicitudes reciben inmediatamente una respuesta HTTP 503, sin ser encoladas en el sistema operativo.
- Límite por Sesión (
http.maxSessionConnections): Cuando se configura con un valor superior a cero, controla el número máximo de conexiones simultáneas por identificador de sesión (headerAuthorization). Cada inicio de sesión activo se trata de forma independiente. - Límite para Clientes Web (
http.maxWebConnections): Define un límite global específico para accesos realizados a través de la interfaz Web o Vue, sirviendo como una capa adicional de protección contra picos de tráfico originados desde el front-end.
Comportamiento en caso de límite alcanzado
Siempre que cualquiera de los límites se alcanza, el servidor ejecuta las siguientes acciones de forma inmediata:
- Interrumpe el procesamiento de la solicitud antes de llegar a la capa de negocio;
- Retorna el estado HTTP 503 (Service Unavailable);
- Cierra la conexión de forma limpia.
Este enfoque evita la acumulación excesiva de solicitudes en cola, reduciendo el consumo de memoria y manteniendo la latencia bajo control incluso en momentos de alta carga.
Parámetros de configuración
Las configuraciones se realizan en el archivo config.ini del runtime:
| Parámetro | Descripción | Predeterminado |
|---|---|---|
http.maxThreads |
Número máximo de threads en el pool de Jetty | 208 |
http.maxSessionConnections |
Límite de conexiones simultáneas por sesión (Authorization) | 0 (ilimitado) |
http.maxWebConnections |
Límite global de conexiones para clientes Web (X-Client-Id) | 0 (ilimitado) |
Beneficios de la implementación
- Mayor estabilidad de la plataforma bajo alta carga;
- Prevención de thread starvation e indisponibilidad total del servidor;
- Acceso garantizado a herramientas de diagnóstico incluso en sobrecarga;
- Respuestas más rápidas y previsibles en situaciones de pico;
- Reducción de consumo innecesario de recursos del sistema operativo.
Esta funcionalidad representa un avance importante en la capacidad operativa de RUB, haciendo que la plataforma sea más robusta y esté preparada para entornos con un gran volumen de accesos simultáneos.