Por que o Ubuntu não parece liberar memória?

5

Estou trabalhando com o apache2 + php e outros aplicativos de servidor da web.

Tenho monitor como sessão conectando-se a um servidor da web. A memória RAM está cheia.

Mas ao desconectar uma sessão, ela não libera a memória RAM.

Eu monitorei via free -m , e ele mostra a memória não liberada mesmo sem sessão conectada agora.

Existe uma solução?

    
por Tejaskumar Tank 06.08.2014 / 18:28

1 resposta

7

Você pode liberar memória não utilizada usando este comando:

sudo sync & sysctl -w vm.drop_caches=3

Este comando sincroniza os dados em cache e, em seguida, grava um parâmetro do SO em tempo de execução, localizado em / proc / sys / vm / drop_caches . Este parâmetro é lido pelo kernel uma vez e depois libera a memória não utilizada.

Basicamente, o kernel reserva três seções no cache, que podem aumentar o uso de memória:

  • pagecache
  • dentries
  • inodes

Escrever neste parâmetro fará com que o kernel deixe cair pagecaches, dentries e inodes limpos da RAM, fazendo com que a memória fique livre. Existem três valores que podem ser atribuídos:

  1. vm.drop_caches = 1 pagocaches gratuitos.
  2. vm.drop_caches = 2 dentros e inodos gratuitos.
  3. vm.drop_caches = 3 pagecaches, dentries e inodes gratuitos.

Importante: Após a execução, isso retornará ao estado normal, o que significa iniciar o cache de pagecaches, dentries e inodes novamente. Use-o dependendo da configuração e da aplicação do seu servidor.

    
por JG. 07.05.2015 / 17:15