
Estoy creando un sistema de monitoreo que detectará cuántas solicitudes (inactivas) se están procesando actualmente. El método que estoy usando para detectar esto es conectándome a http://servidor local/el estado del servidor .
La pregunta es, si Apache no puede ofrecer más conexiones nuevas (por ejemplo, MaxClients
llegó a la cima), ¿cómo puedo detectar las estadísticas de Apache? ¿Es posible que Apache sea lo suficientemente inteligente como para ignorar MaxClients
la configuración de las conexiones desde localhost?
Se agradece cualquier ayuda.
Respuesta1
Creo que la respuesta es no, por dos razones (y una tercera, confusa):
Supongamos que las solicitudes
/server-status/
eran inmunesMaxClients
(pero incrementaban el recuento de clientes). Entonces, sería demasiado fácil DoS Apache con solicitudes, de modo que las legítimas no puedan ser atendidas (y dado que pueden pasar mucho tiempoMaxClients
, no hay posibilidad de que alguna vez se responda a las reales)Es probable que Apache tenga su recuento de clientes basado en [alguna función de] la cantidad de conexiones abiertas (una conexión
:80
solo puede enviar una solicitud a la vez, peroKeepAlive
nos permite reutilizarla, por lo que abrir una conexión TCP es esencialmente un cliente). Esto se comprobará incluso antes de leer los encabezados (si hay espacio, delegará la solicitud a tratar. Si no lo hay, fallará rápidamente).Cada vez que estoy sobrecargado de conexiones,
service httpd fullstatus
funciona muy lento o no funciona en absoluto :-)
Respuesta2
Es posible que necesite escribir un módulo de Apache (o modificar mod_status) para que se utilice otra interfaz para la comunicación con el servidor Apache. Es posible que desee utilizar señales Posix y memoria compartida o un archivo para solicitar y obtener las estadísticas.