Problema de vazamento de memória no Centos5

3

Recentemente, acabei de comprar um servidor dedicado como uma atualização para um pequeno site da comunidade a partir da hospedagem compartilhada que tivemos nos últimos 3 anos. Eu tinha instalado o httpd, php e mysql (os usuais para um servidor web). Configurei o httpd para alguns hosts virtuais e instalei o webmin e o cacti. Tudo parecia rodar muito bem até que eu notei algo no gráfico para o uso da memória em cactos.

Meu servidor tem 2gig de RAM e, por algum motivo, 1,7gig dele estava em uso. Eu logado como root através do SSH e reiniciei o servidor e, em seguida, corri 'top'. Imediatamente, ele chegou a usar 600meg de RAM e continuou aumentando lentamente, mas não parecia nada estava usando a RAM. Eu corri 'ps aux'. Mas, por alguma estranha razão, parece que nenhum aplicativo em execução está usando mais de 2% de RAM. Se eu adicionar todo o mem uso de 'ps aux', ele sai para cerca de 20,6%, o que eu diria que está perto de 400meg de RAM, isto é, quando mais de 800meg de RAM estiver em uso.

Então, parece-me que cerca de 400meg de ram estava sendo usado onde nenhum aplicativo estava reivindicando isso. Com o tempo, a memória se acumula lentamente até usar toda a RAM disponível. Porém, eu não deixei chegar a esse ponto ainda.

Não sei bem como descobrir o que fazer a seguir para tentar corrigir o problema. Qualquer ajuda seria apreciada.

Gráfico de uso de memória de cactos:

Saídade 'ps aux' & 'free -o'

Deixe-me saber se mais alguma informação é necessária.

    
por mNova 27.09.2010 / 01:01

2 respostas

6

Primeiro, verifique esta página: O Linux comeu minha RAM .

Você não descreveu nenhum comportamento que indique um vazamento de memória, pelo menos nenhum que eu possa perceber. Como explicado na página acima, o kernel usará RAM livre como cache de leitura de disco. Bytes alocados como cache serão liberados pelo kernel imediatamente para qualquer aplicativo que precise dele.

Tente executar free em vez de -o . Ao fazer isso, você receberá um valor de RAM disponível, levando em consideração o que está sendo usado atualmente para o cache. Veja alguns exemplos de saída de um dos meus servidores:

user@host:~$ free
             total       used       free     shared    buffers     cached
Mem:        510652     430976      79676          0     134520     156876
-/+ buffers/cache:     139580     371072
Swap:       262136      40796     221340

Veja a linha -/+ buffers/cache ? O valor na coluna free reflete a quantidade real de RAM disponível para seus aplicativos.

    
por 27.09.2010 / 02:28
0

Aqui está minha configuração:

IBM M3, Dual Quad Core, 8 GB de RAM, CentOS 5 x86_64.

Estávamos executando um aplicativo que era necessário para armazenar dados em um vetor e, em seguida, soltá-lo em um banco de dados. Depois de executar o aplicativo foi alguns dias, nós correu top e descobriu que a utilização da memória foi de 99% +. Isso parecia estranho e eu pensei que talvez o CentOS 5 estivesse usando algum tipo de cache de memória, mas nós poderíamos ver uma degradação visível no desempenho do servidor.

Então, decidi correr bem. Corremos duas janelas de terminais lado a lado para testemunhar qualquer evidência de gargalos. Em uma janela nós estávamos imprimindo dados a velocidade / segundo nossa aplicação estava recebendo os dados e na outra janela nós rodamos um rastro de tcpdump para aquela porta particular.

Descobrimos que a placa de rede estava funcionando a uma velocidade extremamente alta e era capaz de lidar com esses dados muito bem. mas o Kernel não conseguiu pegar esses dados e fornecê-los ao meu aplicativo. Os dados permaneceriam em uma fila de rede e a cada 6 a 10 segundos, o aplicativo receberia um fluxo de dados e cairia novamente.

SOLUÇÃO: Bem, eu não tenho nada para o Cent OS 5. mas mudamos o sistema operacional para o Fedora 14 x86_64. A utilização da memória foi inferior a 1% e o kernel conseguiu processar esses dados a velocidades extremamente altas sem precisar de enfileiramento. isso é tudo que eu tenho e não sei porque o CentOS não suportou essa arquitetura de hardware. nossa outra instalação do CentOS funciona bem. Mas quando fomos para uma arquitetura dual multi core, atingimos essa parede de tijolos.

Espero que isso ajude.

Obrigado

Sid

    
por 03.02.2011 / 02:51