LINUX内存溢出问题,修改内存回收机制

LINUX内存溢出问题,修改内存回收机制

  • 1 首先查看内存是否充足,执行free -h;看内存只剩余一百多兆,
  • 2 看内存自动释放的配置cat /proc/sys/vm/drop_caches,看到是0
    参数解释:
    0 不释放内存
    1 释放页面缓存
    2 释放数据区和信息节点
    3 释放页面缓存,数据区和信息节点
  • 3 临时释放内存的方法(执行在执行的时候才会生效):先执行sync进行数据同步,防止丢失数据,再执行echo 3 > /proc/sys/vm/drop_caches释放所有的(注意该文件中的值默认是0,更改后是没有办法更改回0的,原因是0只是系统最开始使用的值,是自动分配的,真正的参数只有1到3)
  • 4 永久释放内存的方法:执行vi /etc/sysctl.conf 在这个文件中添加一行vm.drop_caches=3就可以永久释放内存(注意:使用永久生效时会影响整个系统的性能

在这里具体使用的编写一个定时任务:
执行crontab -e (5个星为别时 分时日月周 (此处是每天执行))
添加
* * */1 * * /root/relaseMem
脚本是

#!/bin/bash
# 截取Mem行的第三列和第二列进行运算(结果是已经使用的内存的比例)
d=`free |grep Mem |awk '{print $3/$2*100.0}'`
# 将结果转换为整型
x=`echo $d | awk '{print int($0)}'`
# 判定是否达到了内存使用的80%,若大于了就释放一次内存
if test $x -gt 80
    then
        # 将改变内容立刻写入磁盘(同步),防止数据丢失
        `sync`
        # 执行后会释放内存(此处的3可以更改为 1 或者 2 )
		`echo 3 > /proc/sys/vm/drop_caches`
fi

你可能感兴趣的:(linux,运维)