
Estou construindo um sistema de monitoramento que detectará quantas solicitações (inativas) estão sendo processadas no momento. O método que estou usando para detectar isso é conectando-se a http://host local/status do servidor .
A questão é: se o Apache não puder servir mais nenhuma conexão nova (ex: MaxClients
alcançou o topo), como posso detectar as estatísticas do Apache? É possível que o Apache seja inteligente o suficiente para ignorar MaxClients
a configuração das conexões do host local?
Qualquer ajuda é apreciada.
Responder1
Acredito que a resposta seja não, por dois motivos (e um terceiro, confuso):
Suponha que as solicitações
/server-status/
fossem imunesMaxClients
(mas aumentassem a contagem de clientes). Então, seria muito fácil fazer DoS apache com solicitações de modo que as legítimas não pudessem ser atendidas (e como elas podem ir alémMaxClients
, não há chance de as reais serem respondidas).O Apache provavelmente terá sua contagem de clientes baseada em [alguma função] do número de conexões abertas (uma conexão
:80
só pode enviar uma solicitação por vez, masKeepAlive
nos permite reutilizá-la, portanto, abrir uma conexão TCP é essencialmente um cliente). Isso será verificado antes mesmo de os cabeçalhos serem lidos (se houver espaço, ele delegará a solicitação a ser atendida. Se não houver, falhará rapidamente).Sempre que estou sobrecarregado com conexões,
service httpd fullstatus
funciona muito devagar ou nem funciona :-)
Responder2
Pode ser necessário 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.