Apache trava periodicamente

Apache trava periodicamente

Eu tenho um pequeno VPS Debian hospedado pela Rackspace executando meu servidor web pessoal. Nas últimas semanas, houve vários momentos em que o Apache (estou executando o 2.2.16) parece estar travado indefinidamente. Reiniciar o Apache /etc/init.d/apache2 restartresolve o problema até que aconteça novamente. Por causa disso, tenho certeza de que não há problema com o DNS ou com a configuração do diretório virtual (nenhuma delas mudou muito antes de isso começar a acontecer).

Às vezes, apenas páginas dinâmicas envolvendo PHP e MySQL são afetadas, e páginas HTML estáticas demoram para carregar; outras vezes, todas as páginas ficam suspensas indefinidamente até eu reiniciar o Apache. Se eu tiver uma guia aberta no Chrome, depois de um tempo de suspensão, poderá ocorrer um erro com ERR_CONNECTION_ABORTED; se eu reiniciar o Apache, ele para de carregar com ERR_CONNECTION_RESET.

Não há nada /var/log/apache2/error.logalém de rastreadores da web em busca de arquivos que não existem. A princípio pensei que fosse um problema de RAM (256 MB, sou barato, mas o tráfego é da ordem de algumas centenas de acessos por dia, principalmente rastreadores da web), mas o swap está longe de estar cheio, os processos do Apache estão ociosos, e embora haja muito pouca memória livre, é praticamente o mesmo depois de carregar algumas páginas após a reinicialização do Apache. O desempenho é aceitável quando está funcionando, só preciso descobrir o que está causando o travamento após alguns dias de atividade.

Tentei reduzir MaxClients e aumentar MaxRequestsPerChild, mas não ajudou:

 <IfModule mpm_prefork_module>
     StartServers          2
-    MinSpareServers       2
-    MaxSpareServers       4
-    MaxClients           10
-    MaxRequestsPerChild 200
+    MinSpareServers       1
+    MaxSpareServers       2
+    MaxClients            4
+    MaxRequestsPerChild 2000
 </IfModule>

(Essas configurações, antigas e novas, e baseadas em pesquisas no Google - há muitas informações conflitantes sobre o que constitui uma configuração razoável.)

Alguma ideia de como posso descobrir o que está acontecendo? Onde estão os bons lugares para procurar um possível impasse?

Pergunta lateral: como o VPS em si está bom, existe algum cronjob que eu possa executar localmente que me alertará quando o Apache começar a se comportar mal? (Não preciso de um serviço pesado de monitoramento externo como o Pingdom.)

informação relacionada