Esperando que alguém me aponte na direção certa, já que passei a semana passada tentando descobrir onde o "problema" está, mas não consegui, tentei postar nas listas de discussão dos usuários do Apache, mas queria saltar também aqui.
Executando o Apache 2.2.3 mod_php no CentOS 5.8.
Ao mesmo tempo, todos os dias, quando o tráfego está pesado, estamos tendo um problema em que o Apache não responde mais a solicitações HTTP.
Parecia que um problema padrão dos MaxClients estava sendo alcançado, mas esse não parece ser o caso.
Além disso, ao fazer login na máquina durante esse período, a média de carga é inferior a 1 e ainda há bastante RAM disponível.
Revendo / var / log / httpd / error_log Eu observei os seguintes padrões:
[Mon Apr 30 07:00:34 2012] [info] server seems busy, (you may need to increaseStartServers, or Min/MaxSpareServers), spawning 32 children, there are 0 idle, and 905 total children
[Mon Apr 30 07:00:35 2012] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 32 children, there are 0 idle, and 937 total children
[Mon Apr 30 07:00:36 2012] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 32 children, there are 0 idle, and 969 total children
[Mon Apr 30 07:00:37 2012] [info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 32 children, there are 35 idle, and 1001 total children
[Mon Apr 30 07:00:42 2012] [debug] mpm_common.c(663): (70007)The timeout specified has expired: connect to listener on [::]:80 <br>
[Mon Apr 30 07:00:49 2012] [debug] mpm_common.c(663): (70007)The timeout specified has expired: connect to listener on [::]:80 <br>
[Mon Apr 30 07:00:56 2012] [debug] mpm_common.c(663): (70007)The timeout specified has expired: connect to listener on [::]:80 <br>
[Mon Apr 30 07:01:03 2012] [debug] mpm_common.c(663): (70007)The timeout specified has expired: connect to listener on [::]:80 <br>
Algumas vezes por dia, logo após o 1000 total children
, o Apache para de responder e precisa ser reiniciado para funcionar novamente.
Revisei o error_log de algumas semanas atrás e é o mesmo padrão, o servidor atinge o total de 1.000 crianças e, em seguida, cospe imediatamente
[debug] mpm_common.c(663): (70007)The timeout specified has expired: connect to listener on [::]:80
mensagem de erro e pára de responder.
No entanto, a carga no servidor é muito baixa ...
Mesmo que eu tente e solicite um arquivo index.html simples, ele expirará.
Aqui está a seção relevante da configuração:
Timeout 45
KeepAlive On
MaxKeepAliveRequests 10000
KeepAliveTimeout 3
<IfModule prefork.c>
StartServers 80
MinSpareServers 50
MaxSpareServers 120
ServerLimit 3500
MaxClients 3500
MaxRequestsPerChild 2000
</IfModule>
Alguém sabe por que o número mágico de crianças que o Apache é capaz de alcançar é 1000 antes de parar de processar mais solicitações?
Ou como entender a mensagem (70007)The timeout specified has expired: connect to listener on [::]:80
?
O "tempo limite especificado" refere-se a?
Eu verifiquei novamente o Max Open Files, que anteriormente estava em 1024, mas agora está em 16384, ainda é o mesmo problema.