服务器内存约为24GB。运行free -g
发现内存被用完了
total used free shared buffers cached
Mem: 23 23 0 0 0 18
-/+ buffers/cache: 4 19
Swap: 56 2 53
top
然后我做了一些研究,看看当时是什么耗尽了所有这些内存M
。但看起来该%MEM
列中的内存相当空闲。
我可以做什么来释放一些内存?这是一个计算服务器,所以最好不要重新启动计算机。
答案1
您误解了 的输出free
。您发布的内容显示您有 19 GB 的可用 RAM。您看到的 23 GB 被系统用作缓存,但仍然可供应用程序使用。这也是为什么top
显示内存为空闲的原因..
看Linuxatemyram.com以获得更详细的解释
答案2
您可以参考这个问题用于确定确切的可用内存。
默认情况下Linux的有一个非常高效内存管理进程应该释放正在运行的计算机上的所有缓存内存。
然而当谈到缓存内存,Linux的有时可能会决定缓存内存正在使用并且需要,这可能会导致内存相关问题并最终耗尽可用内存。为了对抗它,你可以强制Linux的释放任何存储的缓存内存。
要立即释放内存,您可以简单地这样做,
free && sync && echo 3 > /proc/sys/vm/drop_caches && free
编辑:您还可以将此命令作为 cronjob 运行。
作为@mj特纳指出,不太推荐这样做,因为它可能会导致性能瓶颈。