¿Qué ven los usuarios cuando Apache llega a MaxClients?

8

Ocasionalmente, en mi registro de errores de Apache, encontraré:

[error] server reached MaxClients setting, consider raising the MaxClients setting

He bajado deliberadamente MaxClients en el pasado (a 60) debido a problemas con la falta de memoria, pero me gustaría saber exactamente qué está sucediendo en el extremo del usuario cuando se alcanza este límite en el servidor. ¿La página a la que acceden tarda más en cargarse? ¿Reciben algún tipo de mensaje de error?

plantaciones
fuente
1
Probablemente no sería difícil construir una prueba para esto. En un servidor de prueba, intente colocar MaxClients en 1 y vea qué sucede cuando actualiza cosas en múltiples ventanas o pestañas.
ghoti
Definitivamente, esperaba que alguien lo supiera antes de hacer eso. No puedo encontrar ninguna información en la documentación de Apache.
runningonplants

Respuestas:

13

Al principio, las solicitudes del cliente se pondrán en cola, hasta que haya un proceso / subproceso que se libere en el servidor apache. Por lo tanto, los clientes verán un retraso en la carga de la página. Consulte la MaxClientsdocumentación de parámetros para obtener más información.

Cuando se coloca en la cola de pedidos pendientes, la solicitud del cliente puede eventualmente agotar el tiempo del lado del cliente. Luego, el usuario verá una página de error en su navegador que indica que el servidor está tardando demasiado en dar una respuesta. El valor de tiempo de espera predeterminado es de 300 segundos en Firefox , por ejemplo. O el usuario cancelará la solicitud antes del tiempo de espera ...

Luego, si el servidor recibe más solicitudes y no puede obtener un proceso / subproceso libre a tiempo, la ListenBacklogcola puede llenarse (el valor predeterminado es 511 solicitudes en cola) y no se atenderá ninguna solicitud posterior. El navegador le dirá al usuario que no puede conectarse al sitio web, como si el sitio web estuviera completamente inactivo.

Esta cola de pedidos pendientes se gestiona a nivel del sistema operativo, en la implementación de TCP. En Linux, la listenpágina de manual le dará más información sobre la forma en que se gestiona. Aquí hay otra lectura muy perspicaz sobre la cola de TCP backlog en sistemas Linux y BSD .

Tonin
fuente
Exactamente lo que necesitaba saber. ¡Gracias! ¿Sabes si hay una manera de ver cuántos procesos hay en la cola ListenBacklog?
runningonplants
1
El sistema operativo gestiona esta cola de tareas pendientes como parte de la pila tcp. Echa un vistazo a la listenpágina del manual. No estoy seguro de que haya una forma directa de saber qué contiene esta cola. Además, vea esta pregunta SO . He agregado más información a mi respuesta.
Tonin