não consigo encontrar o que usou toda a memória

não consigo encontrar o que usou toda a memória

O servidor tem cerca de 24 GB de memória. Ao correr, free -gdescubro 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 topmemória M. Mas parece que a memória está bastante livre na %MEMcoluna.

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 topmostra 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.

informação relacionada