Apache periodicamente trava

1

Eu tenho um pequeno VPS Debian hospedado pela Rackspace executando meu servidor web pessoal. Nas últimas semanas, houve várias vezes em que o Apache (estou executando o 2.2.16) parece estar pendurado indefinidamente. Reiniciar o Apache com /etc/init.d/apache2 restart resolve o problema até que isso aconteça novamente. Por causa disso, eu tenho certeza que não é um problema com a configuração do DNS ou do diretório virtual (nenhum deles foi alterado desde muito antes de isso acontecer).

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

Não há nada em /var/log/apache2/error.log que não seja rastreadores da web procurando por arquivos que não existem. No começo eu pensei que era um problema de RAM (256 MB, eu sou barato, mas o tráfego é da ordem de algumas centenas de acessos por dia, na maioria rastreadores da Web), mas o swap não está nem um pouco cheio, os processos do Apache estão inativos e embora haja muito pouca memória livre, é praticamente o mesmo depois de carregar algumas páginas após uma reinicialização do Apache. O desempenho é aceitável quando está funcionando, só preciso descobrir o que está causando a interrupção depois de alguns dias de atividade.

Eu tentei reduzir MaxClients e aumentar MaxRequestsPerChild, mas isso 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 no googling - há uma tonelada de informações conflitantes sobre o que faz 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 secundária: como o próprio VPS está bem, há algum cron job que eu possa executar localmente para me alertar quando o Apache começar a se comportar mal? (Eu não preciso de um serviço de monitoramento externo pesado como o Pingdom).

    
por UltraNurd 31.12.2012 / 17:24

0 respostas