解决CentOS buff/cache 过高问题

1 篇文章 0 订阅

场景:某次查看服务器的内存使用情况时,发现buff/cache高得吓人

手动执行命令

在执行这三条命令之前一定要先执行sync命令

描述:sync 命令运行sync子例程。如果必须停止系统,则运行sync命令以确保文件系统的完整性

# 清除pagecache
sync && echo 1 > /proc/sys/vm/drop_caches

# 清除回收slab分配器中的对象(包括目录项缓存和inode缓存)
# slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache
sync && echo 2 > /proc/sys/vm/drop_caches

# 清除pagecache和slab分配器中的缓存对象
sync && echo 3 > /proc/sys/vm/drop_caches

定时清除过大buff/cache脚本

#!/bin/bash
USED_CURRENT=`free -m | awk 'NR==2' | awk '{print $3}'`
FREE_CURRENT=`free -m | awk 'NR==2' | awk '{print $4}'`
# crontab定时任务不能使用绝对路径,不会自动执行
TARGETFILE='/home/mocha/桌面/cleanCache.log'
DATETIME=$(date +"%Y年%m月%d日 %H时%M分")
echo "===========================" >> $TARGETFILE
echo "执行清空缓存时间 ${DATETIME}" >> $TARGETFILE
echo "清理缓存前: | [Used:${USED_CURRENT}MB][Free:${FREE_CURRENT}MB]" >> $TARGETFILE

if [ $FREE_CURRENT -le 300 ]
then
	sync && echo 1 > /proc/sys/vm/drop_caches
	sync && echo 2 > /proc/sys/vm/drop_caches
	sync && echo 3 > /proc/sys/vm/drop_caches
	USED_CLEAN=`free -m | awk 'NR==2' | awk '{print $3}'`
	FREE_CLEAN=`free -m | awk 'NR==2' | awk '{print $4}'`
	echo "清理缓存后: | [Used:${USED_CLEAN}MB][Free:${FREE_CLEAN}MB]" >> $TARGETFILE
else
	echo "不需要清理缓存" >> $TARGETFILE
fi
echo "===========================" >> $TARGETFILE

使用crontab实现定时执行任务

# 表示每天的6点00分执行该脚本
[root@centos7 backup]# crontab -e
00 6 * * * /home/mocha/桌面/cleanCache.sh

脚本命令说明

# NR==1    定位在file的第一行
# print $1 显示第一列内容
awk 'NR==1{print $1}' file
# 以M为单位进行输出
free -m

              total        used        free      shared  buff/cache   available
Mem:           1839        1101         489           0         248         583
Swap:             0           0           0
# 当free变量的值小于等于60000时,条件成立
$free -le 60000
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值