Alto uso da CPU resultando em falha do servidor

2

ficar sem ideias para explorar. Primeiramente fora - deixe-me avisá-lo - eu sou um programador, não um systech:)

Aqui está a situação.

Servidor dedicado (LAMP) executando uma boa quantidade de sites. O servidor mySQL está em uma caixa separada.

Nas últimas duas semanas, o desempenho tem se deteriorado a ponto de eu não poder mais nem me conectar à caixa.

Olhando para o mod_status, há uma quantidade razoável de processos ocupando recursos da CPU. No entanto, as URLs são todas diferentes ... não há um padrão comum - por isso não posso limitar nada a um script específico que possa estar ficando preso.

PHP é executado como cgi.

A maioria dos sites que estão demorando para serem executados estão usando o framework cakephp

Reinicie o servidor, estamos dentro de alguns minutos novamente ...

Cruzou um erro que dizia / var / tmp / estava cheio e não podia escrever sessões. No entanto, ainda havia espaço? A falta de inodes talvez? Atualmente no processo de ter alguém andar até a caixa e limpar o tmp.

A falta de capacidade de escrever sessões pode fazer com que os processos do php sejam interrompidos para sempre e, eventualmente, entupir tudo?

Alguma outra ideia que eu queira explorar? Eu tenho monitorado o sql server para ver se ele está retornando enormes conjuntos de dados em qualquer uma das consultas, e não há nada notável lá ....

São apenas 11:21 e eu já preciso de uma bebida:)

    
por Ryan 15.08.2012 / 20:24

2 respostas

4

Eu assumo que é um problema de memória.

  1. O Apache está comendo muita memória RAM.

  2. O PHP também tem muitos vazamentos de memória. Você deve configurá-lo para reiniciar seus threads de trabalho depois de manipular uma pequena quantidade de solicitação (100 é um bom número). Olhe em /etc/init.d/php-cgi (ou similar) para uma linha "PHP_FCGI_MAX_REQUESTS = 20" ... que o limite. Também defina um limite razoável para o número de filhos, como "PHP_FCGI_CHILDREN = 15". Eu também sugiro que você use php-fpm, se possível, isso é muito mais estável e tem menos vazamentos de memória.

TODO:

  1. Tente procurar por processos mortos em seu syslog (/ var / log / syslog ou / var / log / messages, dependendo da distribuição). Pode haver tal sugestão.
  2. Para rastrear o problema, tente usar "atop" (monitor de processo como top, mas mais alguns recursos) e pressione "p", que acumula todas as estatísticas por nomes de processos. Dê uma olhada no que está consumindo o RSIZE.
por 15.08.2012 / 20:36
0

Você realmente precisa olhar de dentro da caixa em vez de fora, para ver qual recurso está sendo consumido.

Meu palpite é que o pool de processos do apache está esgotado (então ninguém pode se conectar) ou a memória física está esgotada (então o desempenho cai de um penhasco).

    
por 15.08.2012 / 20:39