Temos um site de tráfego moderado (aproximadamente 20.000 acessos por dia), executando um aplicativo PHP / MySQL no Apache 2.2, Ubuntu 9.10 Server, a partir de uma instância do Amazon EC2 c1.small (1.7 Gb de RAM).
Tivemos problemas com o site repetidamente não respondendo. Como um hack sujo, eu configurei o MaxClients / ServerLimit para 450.
<IfModule mpm_prefork_module>
KeepAlive On
KeepAliveTimeout 7
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 450
ServerLimit 450
MaxRequestsPerChild 0
</IfModule>
O site parece passar mais tempo do que antes, mas ainda morre. Verificando a lista de processos, eu tenho (terceira coluna é mem física, quarta coluna é tamanho virtual):
xxxxxxxxx@domU-XXXXXXXXX:/etc/apache2$ ps -eo pid,user,rss,vsz,args | grep apache
2333 root 11092 39084 /usr/sbin/apache2 -k start
3704 www-data 11060 41292 /usr/sbin/apache2 -k start
3826 www-data 10016 39844 /usr/sbin/apache2 -k start
3954 www-data 11976 41612 /usr/sbin/apache2 -k start
4061 www-data 11844 41668 /usr/sbin/apache2 -k start
4064 www-data 10988 40676 /usr/sbin/apache2 -k start
4084 www-data 11804 41428 /usr/sbin/apache2 -k start
4086 www-data 10192 39828 /usr/sbin/apache2 -k start
4099 www-data 11876 41748 /usr/sbin/apache2 -k start
4100 www-data 10980 40668 /usr/sbin/apache2 -k start
4102 www-data 8952 39724 /usr/sbin/apache2 -k start
4107 www-data 11856 41860 /usr/sbin/apache2 -k start
4108 www-data 9952 39604 /usr/sbin/apache2 -k start
4109 www-data 0 0 [apache2] <defunct>
4114 www-data 7172 39724 /usr/sbin/apache2 -k start
4115 www-data 10968 40668 /usr/sbin/apache2 -k start
4122 www-data 11888 41844 /usr/sbin/apache2 -k start
4123 www-data 11584 41444 /usr/sbin/apache2 -k start
4124 www-data 7036 39596 /usr/sbin/apache2 -k start
4125 www-data 6744 39084 /usr/sbin/apache2 -k start
4126 www-data 9532 39552 /usr/sbin/apache2 -k start
4127 www-data 10112 39812 /usr/sbin/apache2 -k start
4128 www-data 6600 39084 /usr/sbin/apache2 -k start
4129 www-data 6736 39084 /usr/sbin/apache2 -k start
4130 www-data 7004 39596 /usr/sbin/apache2 -k start
4131 www-data 6740 39084 /usr/sbin/apache2 -k start
4132 www-data 11616 41596 /usr/sbin/apache2 -k start
4134 www-data 7024 39588 /usr/sbin/apache2 -k start
4135 www-data 11808 41516 /usr/sbin/apache2 -k start
4136 www-data 7008 39460 /usr/sbin/apache2 -k start
4137 www-data 6988 39460 /usr/sbin/apache2 -k start
4139 1003 796 3040 grep --color=auto apache
victorhooi@domU-12-31-39-02-B6-34:/etc/apache2$
Existe uma maneira fácil de descobrir exatamente o que está acontecendo? Meu entendimento das entranhas do Apache não é tão bom, mas eu teria pensado que não precisaria de tantos processos simultâneos para servir uma página como essa, com esse tipo de tráfego. Nós herdamos o aplicativo, por isso não sabemos muito sobre o seu interior, mas é um site do tipo CMS bastante básico, mostrando alguns resultados de pesquisa, eu não acho que precisaria desse tipo de grunhido.
Eu corri ab contra o site, estava recebendo uma taxa de pedidos bastante ruim (bem abaixo de 50 por segundo), mas essa pode ter sido minha má escolha de configurações - muitas dessas solicitações pareciam falhar.
Onde devo procurar informações sobre o que está acontecendo ou alguma dica de solução de problemas que eu possa tentar?
Felicidades,
Victor