Buff/Cache概念和清理方法
最近在工作中遇到了LInux系统中Buff/Cache过大的问题,从网上查找资料,了解不释放的原因。
buff/cache占用比较大的原因分析:频繁存取文件会导致内存文件被用光,即便是程序结束后,也不会被正常释放,这就会导致buffer和cache占用比较高。
free -h
total:是指计算机总物理内存。
used:已用的内存。
free:空余的内存。
shared:被多个进程共享的内存。
buffers:用于存放到输出到disk(块存储)的数据,在这里buff是指被OS buff住的内存。
cached: 存放从disk上读出的数据,buff和cache是为了提高IO性能并由OS管理的。
我们可以使用下面的命令进行清理:
1)清理pagecache(页面缓存)
echo 1 > /proc/sys/vm/drop_caches或sysctl -w vm.drop_caches=1
2)清理dentries(目录缓存)和inodes
echo 2 > /proc/sys/vm/drop_caches或sysctl -w vm.drop_caches=2
3)清理pagecache、dentries和inodes
echo 3 > /proc/sys/vm/drop_caches或sysctl -w vm.drop_caches=3
编写脚本如下:
#!/bin/bash
#
#
sync;sync;sync
sleep(10)
echo 3 > /proc/sys/vm/drop_caches
可见:Buff/Cache被清理。