最近我发现我的服务器Ubuntu 18.04 LTS
的 buff/cache 内存使用率很高。
free -mh
total used free shared buff/cache available
Mem: 7.8G 1.5G 4.4G 109M 1.9G 5.9G
Swap: 8.0G 0B 8.0G
这是在重新启动服务器之后,之前的情况5GB
。
top - 09:39:07 up 18 min, 1 user, load average: 0.09, 0.28, 0.58
Tasks: 161 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.1 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8153548 total, 4574140 free, 1534508 used, 2044900 buff/cache
KiB Swap: 8388604 total, 8388604 free, 0 used. 6202180 avail Mem
跑去把它扔下之后echo 3 > /proc/sys/vm/drop_caches
,它又开始飞得很高。
我如何才能检测谁消耗了最多的 buff/cache,以及如果消耗得那么高我是否应该担心?
答案1
如果涨得这么高我应该担心吗?
不是。在 Linux 上,缓存的优先级较低,并且可以自动轻松回收。https://www.linuxatemyram.com/
实际上,一半内存是空闲的意味着您拥有两倍于您“需要”的 RAM,而另一半则未被使用。进行一些容量规划,以检查此主机的工作负载是否会增加。如果没有,您可以减少并重新利用其内存。例如,将虚拟机的 RAM 分配减少到 6 或 4 GB。
跑去把它扔下之后
echo 3 > /proc/sys/vm/drop_caches
,它又开始飞得很高。
不要 drop_caches,这没有任何操作目的,而且会使速度变慢。它的良好用例仅限于冷启动基准测试。