Como posso liberar memória / gerenciar memória em uma caixa linux?

0

Estou executando dois Ubuntu 12.04 servidores (sem GUI / desktop) usando imagens da nuvem da canonical em% código%. Um é um Amazon EC2 com micro de RAM e um é um meio com 613MB de RAM.

Eu só tenho o chefe do opscode instalado na caixa 3.75GB , e na caixa grande eu tenho um aplicativo java / Índice SOLR inicializado com 2048 MB de ram:

JAVA_OPTIONS="-server -Xms2048m -Xmx2048m -XX:+UseParallelGC -XX:NewRatio=5"

Se eu tiver tido micro em execução na micro-caixa por algum tempo e, em seguida, tentar instalar um novo programa ou iniciar algo como chef ou RabbitMQ , receberei um erro sobre não ter o suficiente memória livre para concluir a operação.

Na caixa grande, parece que o aplicativo Java irá travar periodicamente quando a memória ficar fraca, ou depois que a caixa estiver ligada por um tempo.

Usando o comando Apache2 / free , vejo que, na verdade, não há muita memória disponível, quando geralmente eu tenho que reinicializar o sistema para "limpar" a memória.

Parece que ou a memória deve ser automaticamente liberada ou "desmarcada" após algum momento, ou se deve ser feita manualmente, pode haver uma maneira melhor de liberar / limpar / gerenciar a memória com mais eficiência.

Existe uma maneira de liberar / limpar manualmente a memória do sistema? Existe uma ferramenta que irá verificar / limpar a memória automaticamente?

    
por cwd 11.03.2013 / 19:56

2 respostas

3

A necessidade de reiniciar certamente não faz muito sentido - se a sua memória estiver cheia, ela deve estar cheia de algo , e se você parar esse processo (por exemplo o aplicativo java), então essa memória seria liberada.

No entanto, se você precisar fazer isso apenas para poder reiniciar o mesmo aplicativo, há a questão de por que o processo teria crescido para consumir tanta memória dessa maneira. Normalmente, um processo que apenas cresce e cresce e nunca libera qualquer coisa pode ser considerado um que esteja vazando memória devido a um bug interno.

Ou seja, a primeira coisa que você precisa fazer é descobrir qual software especificamente está causando o problema; ferramentas como top são comumente usadas para isso. Talvez você também esteja interessado em plog .

    
por 11.03.2013 / 20:16
-1

existe essa idéia absurda que eu li em algum lugar sobre abandonar os caches, mas nunca tentei fazê-lo sozinho. Por sua conta e risco, você pode tentar:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

basicamente, o que você está fazendo aqui é, você está cometendo as operações de gravação em disco, armazenadas em cache na memória, no (s) disco (s) e limpando as partes da memória cache. Mas se o seu sistema estiver configurado normalmente, isso deve começar a ser construído assim que você concluir a execução desse comando. Mas pode lhe dar um alívio momentâneo para superar a mensagem "não há memória suficiente". E se o comprometimento com o disco falhar, o comando "soltar cache" não funcionará como você pode ver no comando "& &", portanto, é uma opção bastante segura.

    
por 11.03.2013 / 20:26