Linux清理buff/cache

当服务器内存不够使用时,通过命令free -h,查看服务器内存使用情况,发现buff/cache占用了大量内存。

可以执行以下操作:

sync;echo 1 > /proc/sys/vm/drop_caches # 表示清除pagecache。
sync;echo 2 > /proc/sys/vm/drop_caches # 表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
sync;echo 3 > /proc/sys/vm/drop_caches # 表示清除pagecache和slab分配器中的缓存对象。

Linux内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。一般情况下,这个操作中主要的内存释放都来自于对buffer/cache的释放。

可以将这些命令加入到定时任务crontab。