清除linux内存buff/cache

本文聚焦Linux系统中buff/cache内存占用过高问题。介绍了buffer和cache产生的原因,即Linux内核为提高读写速度将文件缓存于此,且因系统特点导致其持续增高。还提及输入清理代码将缓存写入磁盘,并查看清除buff/cache后的内存占用情况。

buff/cache内存占用太高

使用服务器时感觉到明显卡顿,输入free -h命令查看内存占用

[root@shanghai mysql8] free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        846M        108M         29M        882M        772M
Swap:            0B          0B          0B

buffer和cache产生的原因

当你的服务进程在对文件进行读写的时候,Linux内核为了提高服务的读写速度,则将会把文件放在此处的 buffer/cache 中进行缓存使用,
由于 Linux服务的特点便是任何事物都会以文件的形式进行存在,所以你会发现不管你是否对文件做了大规模的读写,
机器的 buffer/cache 是一直都存在的,并且持续的增高不下,这是因为服务器所产生的网络连接也好,
用户协议的(UDP)套接字也好,这部分的数据系统都会为应用程序创建对应的文件描述符,
而这些文件描述符的使用,则又都会重新进入 buffer/cache 中做读写使用,所以这也是你的机器始终都会存在较高 buffer/cache 的原因

简单来说,buff是即将要被写入磁盘的,而cache是被从磁盘中读出来的。

输入清理代码,将缓存写到磁盘

# 将所有未写的系统缓冲区写到磁盘中
sync
# 清除page cache
echo 1 > /proc/sys/vm/drop_caches
# 清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
echo 2 > /proc/sys/vm/drop_caches
# 清除pagecache和slab分配器中的缓存对象。
# /proc/sys/vm/drop_caches的值,默认为0
echo 3 > /proc/sys/vm/drop_caches

清除buff/cache后,查看内存占用

输入free -h命令查看内存占用

[root@shanghai mysql8] free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        847M        812M         29M        177M        810M
Swap:            0B          0B          0B
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L-960

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值