O que pode fazer com que o HTTPD do Apache use 100% da CPU indefinidamente

3

Uma aplicação rodando um Apache HTTPD 2.0 levemente carregado, ocasionalmente teve problemas onde um (ou mais?) dos processos do Apache levou 100% da CPU. Atualmente, executamos o HTTPD 2.2, podemos ter visto isso com o 2.2 também. Não tenho certeza. Em alguns casos, o uso da CPU era tal que bloqueava todos, exceto o acesso ao console do servidor Windows que hospedava o HTTPD. Eu nunca fui capaz de rastrear o que pode fazer com que o Apache faça isso.

O ambiente é o Apache HTTPD servindo diretamente o conteúdo estático, usando mod_rewrite mas não muito mais de configuração personalizada. O HTTPD está falando com o Apache Tomcat (5.x) via mod_jk (1.2.25).

Alguém mais encontrou isso e resolveu? A solução alternativa que instalamos é limitar cada subprocesso HTTPD do Apache a um número máximo de solicitações com a seguinte configuração:

MaxRequestsPerChild 1000

onde, porque o aplicativo usa HTTP / 1.1, isso é realmente mais de 1000 solicitações por processo filho e mais como 100.000 solicitações por processo filho.

    
por Eddie 30.04.2009 / 18:54

7 respostas

5

É mais provável que o bloqueio esteja acontecendo em um módulo, e não no próprio Apache. Sua configuração parece muito pequena, então eu suspeito de mod_jk como o culpado. Se a limitação de MaxRequestsPerChild corrigir o problema, eu diria que é uma solução aceitável. É possível que um bug no módulo só seja acionado após um longo período de tempo ou muitas solicitações, e, a menos que você esteja realmente interessado em rastreá-lo, provavelmente será bom o suficiente.

Se você quiser rastreá-lo, a primeira coisa a fazer é configurar CoreDumpDirectory para apontar para algum local em que o usuário do servidor possa gravar. Se você conseguir que o processo ofensivo deixe um arquivo principal para trás, ele deverá ajudá-lo a rastrear a causa do problema. Você pode encontrar algumas dicas sobre como fazer isso no Guia de Depuração do Apache .

    
por 04.05.2009 / 06:08
2

Quando vejo isso, é porque: - um aplicativo ou script hospedado está causando o problema. Exemplo, ele tem um loop infinito ou algo - o sistema operacional ficou instável devido ao bloqueio ou a algum outro problema em que a reinicialização temporariamente resolveu o problema.

Minha sugestão: - Reinicie a máquina. - espere e veja se isso acontece de novo - reinicie o servidor sem mods, etc. - Comece a ligar cada mod um por um e cada vez observar o uso.

    
por 30.04.2009 / 22:18
1

Limitar o MaxRequestsPerChild ajudará no uso da memória, mas não afetará a CPU da maneira que você está falando. O que provavelmente está acontecendo é que o seu mod_jk está falhando e, como é um módulo do apache, ele aparece sob o processo httpd.

    
por 30.04.2009 / 21:30
1

Eu realmente vi isso acontecer quando você tem um diretório de log que não existe. Eu não sei por que eles não lidam com isso melhor, mas você pode querer ter certeza de que todos os diretórios de log estão lá e o processo pode escrever para eles.

    
por 02.05.2009 / 20:16
1

instale mod_proctitle para o apache

    
por 27.05.2009 / 11:32
1

RLimitCPU nem sempre ajuda, porque nem todas as partes do código do apache têm verificações para ele.

MaxRequestsPerChild também pode não ajudar, como já vi com crianças relativamente "novas".

No meu caso, suspeito que tenha algo a ver com o módulo que estamos usando (mod_perl) e talvez algo com uma conexão de soquete quebrada. Parece que só vemos esse problema com navegadores se conectando, não a partir do wget ou curl (que usamos muito para 'entrega de dados').

    
por 29.07.2009 / 16:01
-1

Eu também estava enfrentando o mesmo problema até descobrir a causa raiz do problema ...

Problema : Atualmente, meu site está sendo executado no Wordpress com o XAMPP no servidor de nuvem do Windows e o uso da CPU está indo 100%

Solução : verifiquei meu arquivo de log do Apache (access.log) e alguém estava tentando acessar o arquivo xmlrpc.php e 10 solicitações a cada segundo que faz o servidor Apache ocupado processando a solicitação recebida , então aqui eu sugiro que você bloqueie o acesso de entrada para o arquivo xmlrpc.php do seu arquivo .htaccess, também bloqueou o IP do meu provedor de hospedagem, como resultado, o uso da CPU agora é de 3-5% no máximo.

Nota: esta solução é para os sites que executam o Wordpress

link

link

    
por 28.06.2016 / 12:17