Tivemos o mesmo problema no Apache 2.4.6. Depois de monitorar o servidor e ajustar a configuração por várias horas, parece-nos que o Apache pode ter um bug. O que parece acontecer é que os processos do servidor ocasionalmente entram no estado G
(acabamento gracioso) e reinicia para aceitar novas solicitações, o que é normal. O que não é normal é que, por algum motivo, isso pode levar alguns minutos para ser reiniciado. Se você tiver apenas alguns processos do servidor em execução e todos entrarem no estado G
ao mesmo tempo, seu painel de pontuação será preenchido e você não poderá mais solicitações do servidor.
O que fizemos foi aumentar o número de servidores para que houvesse uma menor chance de todos entrarem no estado G
ao mesmo tempo. Além disso, certifique-se de alocar pelo menos 25 encadeamentos ( MaxRequestWorkers
) para cada processo do servidor, porque esse parece ser o padrão (por exemplo, se 5 Servers
x 25 ThreadsPerChild
= 125 MaxRequestWorkers
). Você pode alterar ThreadsPerChild
se quiser, deixamos como padrão. Se você não alocar threads suficientes, os servidores adicionais não serão iniciados. Deixamos MinSpareThreads
com o valor padrão 25 e o padrão para MaxSpareThreads
que é 75. Se você modificar essas configurações, o valor para MaxSpareThreads
deverá ser maior ou igual à soma de MinSpareThreads
e %código%. Também ThreadsPerChild
deve ser igual ou menor que o MaxRequestWorkers
.
Aqui está o que funcionou para nós, mas pode não ser a melhor configuração para você.
StartServers 3
MinSpareServers 5
MaxSpareServers 10
ServerLimit 250
MaxRequestWorkers 250
MaxConnectionsPerChild 1000
KeepAlive Off
Editar: Este é um bug confirmado no módulo mpm_event do httpd, que talvez não possa ser corrigido por meio de configuração.
A entrada bugtracker vinculada tem um patch presumido e mais discussões sobre como corrigir isso até uma nova versão do módulo do evento é lançado oficialmente.