O uso da memória no servidor web debian continua subindo [duplicado]

1

meu servidor está executando o apache 1.3.x para um aplicativo PHP, junto com o mysql na mesma máquina. A maior parte do tempo funciona bem, o uso da CPU continua com boa margem, mas de alguma forma o uso da memória continua crescendo durante todo o tempo de atividade.

Embora pareça estar fragmentado de vez em quando, tive momentos em que o meu servidor ficou inativo porque está sem memória. Reiniciar o apache ou o mysql apenas reduziu o memusage em 100M.

Anexado é uma visão geral do uso de memória mensal. As duas grandes quedas são reinicializações do servidor após situações de falta de memória. link

Quaisquer explicações para o seu comportamento ou como eu poderia resolver isso?

Obrigado! Steven

    
por Steven De Groote 29.06.2011 / 00:59

2 respostas

1

O gerenciamento de memória linux basicamente tenta empregar toda a memória possível. O espaço "livre" é continuamente usado como caches de buffer na tentativa de ser eficiente. Isso aumenta com o tempo, mas como o novo processo precisa de mais memória e como o pool livre diminui, o gerenciador de memória retornará o cache do buffer conforme necessário. Assim, você vê, talvez, uma fração da memória sendo liberada quando você encerra alguns processos. No entanto, esse armazenamento em cache do buffer não leva a uma condição de falta de memória.

Pergunta: você está usando uma versão linux de 32 ou 64 bits? Se você estiver usando uma versão de 32 bits, então é possível que um dos processos apache do mysql colidiu com o limite de memória de processo de 2GB e, portanto, esteja sem memória. Este é apenas um palpite no entanto.

Você está executando outras coisas além do apache e do mysql que podem estar tomando memória. Alguns aplicativos java mal codificados também têm sido leakers. Não está claro novamente que qualquer um dos seus outros processos pode estar causando um problema de memória.

Alguma investigação no sistema, mistura de processos, parâmetros de configuração do mysql podem estar em ordem.

BTW, eu entendo que você pode liberar o cache do buffer usando o seguinte comando (como root):

 sync; echo 3 > /proc/sys/vm/drop_caches

No entanto, isso não é algo que eu recomendo que você faça em uma situação de produção, mas pode ser interessante em um ambiente de teste ou de referência.

Espero que isso ajude.

    
por 29.06.2011 / 01:28
0

O comportamento mostrado pelo seu gráfico é normal para o linux / unix, pois ele usará toda a memória disponível o tempo todo para gerenciar melhor a si mesmo - há inúmeros artigos discutindo esse comportamento se você quiser saber mais. É por isso que reiniciar o mysql ou o apache só resulta em um pequeno "ganho".

Como você não pode "resolver" esse comportamento específico, é necessário examinar o que está acontecendo para causar o problema de falta de memória. Não é difícil para o Apache + php criar uma condição de corrida, seja por um pico de tráfego ou por um bug no (s) aplicativo (s) que você está executando.

Ajustando os limites em sua configuração do apache, ajustando os limites de conexão e memória para o mysql, a instalação de um cache opcode para php são todas as formas de obter mais desempenho de sua configuração existente.

Sinta-se à vontade para postar mais detalhes ou outra pergunta para obter assistência adicional.

Boa sorte!

    
por 29.06.2011 / 01:23