查看内存使用率
1 2
| sync echo 1 > /proc/sys/vm/drop_caches
|
清理内存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #!/bin/bash #系统分配的区总量 mem_total=`free -m | awk 'NR==2' | awk '{print $2}'` #当前剩余的大小 mem_free=`free -m | awk 'NR==3' | awk '{print $4}'` #当前已使用的used大小 mem_used=`free -m | grep Mem | awk '{print $3}'` if (($mem_used != 0)); then #如果已被使用,则计算当前剩余free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0 mem_per=0`echo "scale=2;$mem_free/$mem_total" | bc` DATA="$(date -d "today" +"%Y-%m-%d-%H-%M") free percent is : $mem_per" echo $DATA >> /var/log/mem_detect.log #设置的告警值为20%(即使用超过80%的时候告警)。 mem_warn=0.20 #当前剩余百分比与告警值进行比较(当大于告警值(即剩余20%以上)时会返回1,小于(即剩余不足20%)时会返回0 ) mem_now=`expr $mem_per \> $mem_warn` #如果当前使用超过80%(即剩余小于20%,上面的返回值等于0),释放内存 if (($mem_now == 0)); then sync echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_caches #将release memory OK !写入temp文件夹的memstat_日期.log日志中 echo "--->release memory OK ! " >>temp/memstat_$(date +%Y%m%d_%H%M%S).log fi fi
|
要达到释放缓存的目的,我们首先需要了解下关键的配置文件 / proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为 0,也就是不释放缓存。他的值可以为 0~3 之间的任意数字,代表着不同的含义:
0 – 不释放
1 – 释放页缓存
2 – 释放 dentries 和 inodes
3 – 释放所有缓存
———————
自动脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #!/bin/bash #系统分配的区总量 mem_total=`free -m | awk 'NR==2' | awk '{print $2}'` #当前剩余的大小 mem_free=`free -m | awk 'NR==3' | awk '{print $4}'` #当前已使用的used大小 mem_used=`free -m | grep Mem | awk '{print $3}'` if (($mem_used != 0)); then #如果已被使用,则计算当前剩余free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0 mem_per=0`echo "scale=2;$mem_free/$mem_total" | bc` DATA="$(date -d "today" +"%Y-%m-%d-%H-%M") free percent is : $mem_per" echo $DATA >> /var/log/mem_detect.log #设置的告警值为20%(即使用超过80%的时候告警)。 mem_warn=0.20 #当前剩余百分比与告警值进行比较(当大于告警值(即剩余20%以上)时会返回1,小于(即剩余不足20%)时会返回0 ) mem_now=`expr $mem_per \> $mem_warn` #如果当前使用超过80%(即剩余小于20%,上面的返回值等于0),释放内存 if (($mem_now == 0)); then sync echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_caches #将release memory OK !写入temp文件夹的memstat_日期.log日志中 echo "--->release memory OK ! " >>temp/memstat_$(date +%Y%m%d_%H%M%S).log fi fi
|