不经过悉心栽培,花儿开不出鲜艳的花朵;不经过时间的历练,幼苗长不成参天大树。

Linux 云服务器 buff/cache 占用过多

linux 建伟 222℃ 0评论

在Linux下经常会遇到buff/cache内存占用过多问题,尤其是使用云主机的时候最严重,由于很多是虚拟内存,因此如果buff/cache占用过大的,free空闲内存就很少。

普通机器:total=used+free
虚拟机器:total=used+free+buff/cache

1、手动解决

依次运行以下命令:

sync
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

注意:在执行这三条命令之前一定要先执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-Node、已延迟的块 I/O 和读写映射文件)

2、定时任务

新建 shell 脚本 clear.sh 直接复制我下面的即可

#!/bin/bash
used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`
echo "===========================" >> /home/jobs/log.log
date >> /home/jobs/log.log
echo "Memory usage before | [Use:${used}MB][Free:${free}MB]" >> /home/jobs/log.log
if [ $free -le 60000 ] ; 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_ok=`free -m | awk 'NR==2' | awk '{print $3}'`
        free_ok=`free -m | awk 'NR==2' | awk '{print $4}'`
        echo "Memory usage after | [Use:${used_ok}MB][Free:${free_ok}MB]" >> /home/jobs/log.log
        echo "OK" >> /home/jobs/log.log
else
        echo "Not required" >> /home/jobs/log.log
fi
exit 1

加入定时任务

crontab -e #编辑当前用户定时任务
#输入:*/1 * * * * sh opt/anso/jobs/clear.sh 保存
crontab -l #查看是否创建成功
service crond restart #重启crond服务
service crond status #查看crond服务是否重启成功

转载请注明:Li Jianwei's Blog » Linux 云服务器 buff/cache 占用过多

喜欢 (0)or分享 (0)
web技术交流群
22765697