在 Linux 系统中,“缓存占用过高”通常并不是真正的问题,因为 Linux 会利用空闲内存做 页缓存(Page Cache) 来提升性能。当应用需要内存时,系统会自动回收这部分缓存。
下面分情况说明如何处理。
free -h
示例:
total used free shared buff/cache available
Mem: 7.7G 2.1G 0.3G 0.1G 5.3G 5.0G
buff/cache 高很正常available,如果还很多,就不需要处理cat /proc/meminfo
关注:
CachedBuffersSlabLinux 设计如此,不要手动清缓存,除非:
# 释放 pagecache
echo 1 > /proc/sys/vm/drop_caches
# 释放 dentries 和 inodes
echo 2 > /proc/sys/vm/drop_caches
# 全部释放
echo 3 > /proc/sys/vm/drop_caches
⚠️ 需要 root,且会短暂降低性能
slabtop
sysctl -w vm.vfs_cache_pressure=100
值越大,越积极回收 dentry/inode 缓存
top
# 或
ps aux --sort=-%mem
node_exporter + Prometheus✅ 需要关注:
available 很低❌ 不需要关注:
buff/cache 高如果你愿意,可以贴一下:
free -hcat /proc/meminfo我可以帮你具体分析是哪一种情况。