Posso obter localhost / server-status mesmo quando MaxClients está cheio?

4

Estou criando um sistema de monitoramento que detecta quantas solicitações (ociosas) estão sendo processadas no momento. O método que estou usando para detectar isso é conectando-se a http: // localhost / server-status.

A questão é, se o Apache não pode servir mais nenhuma conexão nova (ex: MaxClients chegou ao topo) como eu sou capaz de detectar a estatística do apache então? É possível que o Apache seja inteligente o suficiente para ignorar a configuração de MaxClients para conexões do host local?

Qualquer ajuda é apreciada.

    
por confiq 04.11.2012 / 13:22

2 respostas

3

Eu acredito que a resposta é não, com duas razões (e uma terceira, lanosa):

  1. Suponha que as solicitações para /server-status/ estivessem imunes a MaxClients (mas aumentassem a contagem de clientes). Então, seria muito fácil fazer DoS apache com pedidos para que os legítimos não pudessem ser atendidos (e, como eles podem ultrapassar o MaxClients , não há chance de os verdadeiros responderem)

  2. O Apache provavelmente terá sua contagem de clientes com base em [alguma função] do número de conexões abertas (uma conexão com :80 pode enviar apenas uma solicitação por vez, mas KeepAlive nos permite reutilizá-la , então abra uma conexão TCP é essencialmente um cliente). Isso será verificado antes que os cabeçalhos sejam lidos (se houver espaço, ele delegará a solicitação a ser tratada. Se não houver, a falha será rápida).

  3. Sempre que estou sobrecarregado com conexões, service httpd fullstatus funciona muito devagar ou não funciona: -)

por 04.11.2012 / 13:25
-1

Você pode precisar escrever um módulo apache (ou modificar mod_status) para que outra interface seja usada para a comunicação com o servidor apache. Você pode querer usar sinais posix e memória compartilhada ou um arquivo para solicitar e obter as estatísticas.

    
por 04.11.2012 / 14:21

Tags