O que os usuários veem quando o Apache atinge o MaxClients?

8

Ocasionalmente, no meu log de erros do Apache, vou encontrar:

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

Reduzi propositadamente o MaxClients no passado (para 60) devido a problemas com a falta de memória, mas eu gostaria de saber exatamente o que está acontecendo no lado do usuário quando esse limite é atingido no servidor. A página que eles estão acessando leva mais tempo para carregar? Eles recebem algum tipo de mensagem de erro?

runningonplants
fonte
1
Provavelmente não seria difícil criar um teste para isso. Em um servidor de teste, tente soltar o MaxClients para 1 e veja o que acontece quando você atualiza as coisas em várias janelas ou guias.
ghoti
Definitivamente - eu esperava que alguém soubesse antes de fazer isso. Não consigo encontrar nenhuma informação na documentação do Apache.
runningonplants

Respostas:

13

No início, as solicitações do cliente serão enfileiradas, até que haja um processo / encadeamento que seja liberado no servidor apache. Portanto, os clientes verão um atraso no carregamento da página. Consulte a MaxClientsdocumentação dos parâmetros para obter mais informações.

Quando colocada na fila de pendências, a solicitação do cliente pode eventualmente atingir o tempo limite no lado do cliente. Em seguida, o usuário verá uma página de erro em seu navegador informando que o servidor está demorando muito para responder. O valor padrão do tempo limite é de 300 segundos no Firefox , por exemplo. Ou o usuário cancelará a solicitação antes do tempo limite ...

Então, se o servidor receber mais solicitações e não conseguir obter um processo / encadeamento gratuito a tempo, a ListenBacklogfila poderá ser preenchida (o padrão é 511 solicitações na fila) e qualquer solicitação subsequente não será atendida. O navegador informará ao usuário que não pode se conectar ao site, como se o site estivesse completamente inativo.

Essa fila de pendências é gerenciada no nível do sistema operacional, na implementação do TCP. No linux, a listenpágina de manual fornecerá mais informações sobre como ele é gerenciado. Aqui está outra leitura muito esclarecedora sobre a fila de pendências TCP nos sistemas Linux e BSD .

Tonin
fonte
Exatamente o que eu precisava saber. Obrigado! Você sabe se há uma maneira de ver quantos processos existem na fila do ListenBacklog?
runningonplants
1
Essa fila de pendências é gerenciada pelo sistema operacional, como parte da pilha tcp. Dê uma olhada na listenpágina de manual. Não sei se há uma maneira direta de saber o que essa fila contém. Além disso, consulte esta pergunta SO . Adicionei mais informações à minha resposta.
Tonin