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

11

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

Eu tenho monitor como sessão conectando a um servidor web. A memória RAM está cheia.

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

Eu tenho monitor via free -m, e mostra memória não liberada, mesmo com nenhuma sessão agora conectada.

Há uma solução?

Tejaskumar Tank
fonte
Cuidado com free -m. A primeira linha mostra o uso da memória, incluindo os buffers e caches. A segunda linha mostra a memória usada menos os buffers e o cache, que é a memória disponível real. Você também deve tentar algo como htoppara fins de monitoramento. É muito mais intuitivo e disponível nos repositórios oficiais. Se você realmente estiver com falta de memória, forneça mais informações, como o tipo de aplicativo Web em execução, a quantidade de RAM que você possui, o que é usado e tudo. Cole a saída do free -m e coisas assim.
Johnride 6/08/14
3
Não há solução, porque não há problema. O Linux usa a RAM disponível como um buffer para arquivos.
Execute o CMD
Mas aqui após o comando de fogo: sudo sync && sudo sysctl -w vm.drop_caches = 3 Ele me mostra a memória disponível gratuitamente e os aplicativos funcionam melhor.
Tejaskumar Tank
Eu sou o mais experiente com o servidor VPS e fundei o debian 9.0 recentemente funcionando perfeitamente com gerenciamento de memória.
Tejaskumar Tank

Respostas:

12

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

sudo sync && sudo sysctl -w vm.drop_caches=3

Este comando sincroniza dados em cache e 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 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

A gravação desse parâmetro fará com que o kernel libere caches de página, 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 pagecaches gratuitos.
  2. vm.drop_caches = 2 dentries e inodes livres.
  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 novamente o cache de pagecaches, dentries e inodes. Use-o dependendo da configuração e do aplicativo do servidor.

Guillermo Garcia
fonte
1
Você pode explicar um pouco mais detalhadamente?
AB
Esse comando é útil apenas quando semanalmente ou diariamente no final do dia deseja liberar toda a memória não utilizada, também 3, 2 ou 1, cada uma com uma finalidade diferente. Não tente fazer isso no servidor carregado por sessão.
Tejaskumar Tank
1
Edite sua resposta, não como comentário.
AB
sudo sync & sudo sysctl -w vm.drop_caches=3
Nyxynyx 31/01
1
@GuillermoGarcia Usando o bash no Ubuntu 18.04.3. Eu precisava incluir sudouma segunda vez. Caso contrário, recebo o errosysctl: permission denied on key 'vm.drop_caches'
Nyxynyx 04/02