¿Puedo obtener el estado del servidor/localhost incluso cuando MaxClients esté lleno?

¿Puedo obtener el estado del servidor/localhost incluso cuando MaxClients esté lleno?

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, MaxClientsllegó a la cima), ¿cómo puedo detectar las estadísticas de Apache? ¿Es posible que Apache sea lo suficientemente inteligente como para ignorar MaxClientsla 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):

  1. Supongamos que las solicitudes /server-status/eran inmunes MaxClients(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 tiempo MaxClients, no hay posibilidad de que alguna vez se responda a las reales)

  2. Es probable que Apache tenga su recuento de clientes basado en [alguna función de] la cantidad de conexiones abiertas (una conexión :80solo puede enviar una solicitud a la vez, pero KeepAlivenos 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).

  3. Cada vez que estoy sobrecargado de conexiones, service httpd fullstatusfunciona 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.

información relacionada