Apache KeepAliveTimeout
existe para cerrar una conexión de mantenimiento si no se emite una nueva solicitud dentro de un período de tiempo determinado. Siempre que el usuario no cierre su navegador / pestaña, este tiempo de espera (generalmente de 5 a 15 segundos) es lo que finalmente cierra la mayoría de las conexiones de mantenimiento y evita que se desperdicien recursos del servidor al mantener las conexiones de forma indefinida.
Ahora, la MaxKeepAliveRequests
directiva establece un límite en el número de solicitudes HTTP que KeepAlive
atenderá una única conexión TCP (abierta debido a ). Establecer esto en 0
significa que se permite un número ilimitado de solicitudes.
¿Por qué pondrías esto en algo que no sea "ilimitado"? Siempre que un cliente siga haciendo solicitudes de forma activa, ¿qué daño hay al permitir que sucedan en la misma conexión de mantenimiento de vida? Una vez que se alcanza el límite, las solicitudes siguen llegando, solo en una nueva conexión.
Desde mi punto de vista, no tiene sentido limitar esto. ¿Qué me estoy perdiendo?
fuente
En parte, para evitar que un solo usuario acapare todas las ranuras de conexión. Sin límite, un cliente malintencionado o mal escrito podría hacerse cargo de todas las conexiones disponibles y conservarlas para siempre. Sin embargo, esta no es una gran mitigación para eso, en comparación con algo así como un límite de conexión por IP.
Principalmente equilibrio de carga, pero específicamente con respecto al mantenimiento. Si desea desconectar un servidor, colóquelo en 0 conexiones pero permita que las conexiones existentes finalicen por un período de tiempo. Poner un límite a la cantidad de solicitudes de keepalive significa que eventualmente los usuarios crearán con gracia una nueva conexión y serán trasladados a un nuevo servidor de fondo. Probablemente alguna forma de indicarle al servidor que debería dejar de aceptar keepalives por completo durante el proceso de drenaje sería aún mejor, pero que yo sepa, esa característica no existe.
fuente