场景:

我们常用的内存型占用较大的服务或者数据库,经过一定的时间,会将系统中的buff/cache占满,导致性能急剧下降,甚至频繁使用swap区进行数据交换。从而导致io也到达瓶颈。

查看buff/cache情况:

# free -h
              total        used        free      shared  buff/cache   available
Mem:            32G        8.9G        8.2G         24M       24.4G        9.3G
Swap:            0B          0B          0B

解决:

#查看drop cache配置
cat /proc/sys/vm/drop_caches

直接清除buff/cache(慎用,如果生产环境cache里跑着数据,你给干了,就凉凉了)

echo 1 > /proc/sys/vm/drop_caches

另外还能设置0-3。

1 :清除pagecache。
2 :清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
3 :清除pagecache和slab分配器中的缓存对象。

buff占用过大,终归还是要究其根因。不能靠万能重启法或者rm -rf 法。

技术交流与资源分享(博主Q微同号: 446794914),感兴趣的朋友欢迎交流。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐