Apache e carga alta avg

2

Eu tenho um problema estranho, não sei como analisar mais - há um site muito leve rodando em uma caixa muito boa (Xeon, 4Gb ram, SATA). A julgar pelos logs de acesso, são cerca de 120 solicitações por segundo.

Carregar média em uma caixa é saltar entre 5 e 20 praticamente aleatoriamente, mas raramente cai abaixo de 10. A utilização da CPU é de cerca de 70% avg e é bastante consistente. Há muitos processos do apache e todos parecem estar bloqueando em algum momento algo que causa carga. para saltar acima de 15, não consigo descobrir como descobrir o que estão bloqueando.

O que posso usar para ver o que está acontecendo dentro do próprio processo do apache e onde ele bloqueia?

    
por Alex N 30.06.2010 / 19:29

3 respostas

2

strace um dos processos em execução pode ajudar

netstat -n |grep :80|cut -c 45-|cut -f 1 -d ':'|sort|uniq -c|sort -nr|more

(pode ser necessário ajustar o 45 dependendo da versão do linux)

ou talvez:

tail -n 10000 access.log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more

você tem algum IP ocupado?

Se a CPU for 70%, isso significa que é uma carga computacional, e não um bloqueio de arquivo. Eu suspeito de um script php que está fazendo muitos cálculos para exibir uma página. Talvez uma recursiva inclua se você ver o IP do servidor aparecer alto em qualquer uma dessas listas. Ou, se você tiver include (' link '); às vezes isso pode aumentar a carga porque o php deve incluir esse arquivo por meio de um soquete.

Você está se aproximando do MaxClients? qualquer coisa no log de erros do apache?

    
por 30.06.2010 / 19:34
1

Algum dos processos do apache parece estar tomando muito da cpu quando visto no topo? Se assim for, tente um deles para ver o que está fazendo. Ele proverá bastante barulho, mas você poderá ver um padrão. Você pode usar script strace -p processid para assisti-lo, então, control-d no final e ter um arquivo chamado typescript que contenha todas as informações também.

Eu suspeito que você tenha um aplicativo php que provavelmente está queimando muita CPU ou fazendo cálculos massivos ou até mesmo algo tão simples como percorrer um diretório para um arquivo que possui dezenas de milhares de arquivos. Também é possível que você tenha um mod_rewrite que esteja fazendo vários redirecionamentos. Baseado no fato de que o carregamento da cpu é bastante constante, pode ser algo bloqueando um arquivo, mas parece que você tem uma busca recursiva ou algo acionado com base em alguém acessando uma página.

    
por 30.06.2010 / 19:54
1

Com base no comentário do op, você deve ajustar os tempos limite de keep alive, normalmente eles são bastante altos nas configurações padrão.

Além disso, se você tiver muitas conexões por segundo e manter os tempos de espera ativos altos, haverá um risco de falta de descritores de arquivo que poderiam levar à espera do io.

    
por 01.07.2010 / 22:45

Tags