本文已参与「新人创作礼」活动,一起开启掘金创作之路。
手动清理centos7 buff/cache 占用过高
背景
遇到一个问题,任务提交不了,显示内存不足,查看内存使用情况
[root@localhost kafka_2.11-1.0.0]# free -h
total used free shared buff/cache available
Mem: 503G 25G 12G 30M 464G 475G
Swap: 29G 73M 29G
从上面使用free -h 命令可以看出是因为buff/cache占用太高,现在就需要手动清理
命令
##手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)
[root@localhost internal]# sync
[root@localhost internal]# echo 1 > /proc/sys/vm/drop_caches
[root@localhost internal]# echo 2 > /proc/sys/vm/drop_caches
[root@localhost internal]# echo 3 > /proc/sys/vm/drop_caches
/proc/sys/vm/drop_caches
/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。
/ proc / sys / vm / drop_caches(从Linux 2.6.16开始)。写入该文件会导致内核从内存中删除干净的缓存,dentries and inodes,从而使该内存变为可用。 要释放页面缓存,请使用echo 1 > /proc/sys/vm/drop_caches; 要释放dentries and inodes,请使用echo 2 > /proc/sys/vm/drop_caches; 要释放页面缓存,dentries and inodes,请使用echo 3 > /proc/sys/vm/drop_caches。 由于这是一种非破坏性操作,脏对象不可释放,因此用户应首先运行同步(sync)。
扩展
因为系统运行一段时间后,还有出现这个问题,为了避免麻烦,我们可以讲命令写在一个shell脚本中,并使用corntab定时清理buff/cache。