O servidor tem cerca de 24 GB de memória. Ao correr, free -g
descubro que a memória está esgotada
total used free shared buffers cached
Mem: 23 23 0 0 0 18
-/+ buffers/cache: 4 19
Swap: 56 2 53
Então fiz algumas pesquisas sobre o que já havia consumido toda essa top
memória M
. Mas parece que a memória está bastante livre na %MEM
coluna.
O que posso fazer para liberar memória? Este é um servidor de cálculo, por isso é melhor não reiniciar o computador.
Responder1
Você está interpretando mal a saída de free
. O que você postou mostra que você tem 19 GB de RAM livres. Os 23 GB que você vê são usados pelo sistema como cache, mas ainda estão disponíveis para aplicativos. É também por isso que top
mostra a memória como livre.
VerLinuxatemyram. compara uma explicação mais detalhada
Responder2
Você pode consultaressa questãopara determinar a memória livre exata.
Por padrão olinuxtem ummuito eficienteprocesso de gerenciamento de memória que deve liberar qualquer memória em cache na máquina em que está sendo executado.
Contudo quando se trata dememória cache,linuxàs vezes pode decidir que omemória cacheestá sendo usado e é necessário, o que pode levar a problemas relacionados à memória e, por fim, consumir a memória livre. Para combatê-lo, você pode forçarlinuxpara liberar qualquer memória em cache armazenada.
Para liberar memória imediatamente, você pode simplesmente fazer isso,
free && sync && echo 3 > /proc/sys/vm/drop_caches && free
EDITADO: você também pode executar este comando como um cronjob.
Como@mjturnerapontou, não é muito recomendado, pois pode causar gargalos de desempenho.