Linux buff/cache过高吃掉物理内存

本文深入探讨了Linux系统中缓存机制的工作原理,特别是buff/cache如何影响内存使用,以及drop_caches参数在不同设置下如何帮助管理这些缓存,避免内存资源过度消耗。

今日发现线上一微服务无法启动,查看了一下物理内存,居然只剩下了1G,然来居然是buff/cache一列占用过高:

那么 buff/cache主要是来干嘛的呢?

Linux具有先进的缓存机制,会针对会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读     写)和Page Cache(针对文件inode的读写)进行缓存操作用来提高读写效率。但是在进行了大量文件操作之后,缓存会把内存资源   基本用光,虽然文件    读取效率提高了,但是物理内存会逐渐被吃光。

然来是因为服务进行了频繁的文件读写操作,但是为什么操作系统不会主动回收呢,原来是因为drop_caches的默认参数设置的就是不释放的

            drop_caches的值可以是0-3之间的数字,代表不同的含义:
            0:不释放(系统默认值)
            1:释放页缓存
            2:释放dentries和inodes
            3:释放所有缓存

        进行如下修改,然后 free -g 发现缓存立即被释放

        echo 1 > /proc/sys/vm/drop_caches

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值