vi recover_mem.sh

#!/bin/bash 
##################
#author:rrhelei@126.com#
##################
#系统分配的区总量  
mem_total=`free -m |grep Mem | awk '{print  $2}'` 
 
#当前剩余的free大小  
mem_free=`free -m |grep Mem | 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 
      sync 
      echo 1 > /proc/sys/vm/drop_caches 
      # To free dentries and inodes: 
      echo 2 > /proc/sys/vm/drop_caches 
      # To free pagecache, dentries andinodes: 
      echo 3 > /proc/sys/vm/drop_caches
  fi
fi

before sh -x recover_mem.sh

[root@HE3]# free  -m

             total       used       free     shared    buffers     cached

Mem:         15948      14774       1173          0        130      7926

-/+ buffers/cache:       6717       9231

Swap:            0          0          0

after sh -x recover_mem.sh

[root@HE3]# free -m

             total       used       free     shared    buffers     cached

Mem:         15948       6603       9344          0          1        18

-/+ buffers/cache:       6582       9365

Swap:            0          0          0

可以看出,cache的缓存已被释放。值得注意的是,cache被释放后,对mysql性能影响比较明显的,因为mysql需要重新cache,因此该脚本仅作救急用,只有当free中剩余的内存低于20%的时候,该脚本才会执行,以防止oom kill掉mysql进程,最直接的手段还是加内存。

本文出自 “岁伏” 博客,请务必保留此出处http://suifu.blog.51cto.com/9167728/1828050

Linux释放内存脚本的更多相关文章

  1. 如何为linux释放内存和缓存

    如何为linux释放内存和缓存_华陌飞尘_新浪博客 如何为linux释放内存和缓存    (2011-10-20 10:49:01)        标签:    linux    swap    me ...

  2. Linux释放内存小脚本

    最近发现渣渣ECS内存总是不够用,内存太小一不小心就用完了,用完就用完吧,内存用来做cache是可以快一些,但是内存用完了老是一顿一顿的卡,实在有点受不了,于是就写了释放内存的小脚本,觉得卡了就释放下 ...

  3. Linux释放内存空间

    Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高系统的运行效率,所以这也正是linux内存管理中 ...

  4. Linux释放内存

    在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好.但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作了. ...

  5. linux释放内存命令

    1.首先查看linux内存使用 #free -m 2.把内存数据同步到硬盘#sync 3.修改 /proc/sys/vm/drop_caches文件 #echo 3 > /proc/sys/vm ...

  6. linux释放内存的命令

    释放cache: sync echo 3>/proc/sys/vm/drop_caches 释放swap: sync swapoff -a swapon -a 版权声明:本文为博主原创文章,未经 ...

  7. linux 释放内存及查看内存命令

    查看内存使用情况: free -m 清理内存: echo 1 > /proc/sys/vm/drop_caches 再次查看内存使用情况 free -m 查看内存条数命令: dmidecode  ...

  8. (转)增加定时检测linux占用内存,及时清理功能

    增加定时检测linux占用内存,及时清理功能 原文:http://www.voidcn.com/article/p-wnmannom-boa.html free -m 查看,发现内存跑满了. 再 to ...

  9. CentOS下SWAP分区建立及释放内存详解

    方法一: 一.查看系统当前的分区情况: >free -m 二.创建用于交换分区的文件: >dd if=/dev/zero of=/whatever/swap bs=block_size ( ...

随机推荐

  1. Win7+QTP10.0+IE9无法识别对象的解决方法

    在WIN7和IE9环境下使用QTP10,会出现识别不了web对象的情况,具体表现为:添加对象,先打开对象库,再打开IE,点击Add object to local 后,出现白色手指,将其拖拉到百度首页 ...

  2. 深入浅出Ajax(五)

    function initPage() { alert("3+3");//3+3 alert(eval("3+3")); //6 //eval()函数可以解析. ...

  3. FCKeditor文字编辑器

    FCKeditor文字编辑器的js调用1.需要fckeditor包 下载地址 http://dl.pconline.com.cn/html_2/1/776/id=48351&pn=0.html ...

  4. Cron 时间元素

    一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天( ...

  5. web.xml的启动顺序

    1. context-param 2. Listener 3. Filter 4. servlet <?xml version="1.0" encoding="UT ...

  6. php 缓存之 APC 和apcu

    php opcode 缓存 apc. 其实,我自己的理解, php apc 缓存其实分两部分, 一部分是 缓存 类似于 java 编译的中间的 字节码, 不同于c 语言编译之后的二进制的机器码. ph ...

  7. openstack创建实例测试步骤

    source admin-openrc.shkeystone user-create --name=demo --pass=123456keystone tenant-create --name=de ...

  8. ACM录 之 常识和错误。

    接下来说说一些ACM里面的常识和错误...(可能会比较乱) —— 首先ACM里面的代码都是要提交上去,然后让计算机自动判题的,所以...千万不要把 system("pause"); ...

  9. openstack controller ha测试环境搭建记录(三)——配置haproxy

    haproxy.cfg请备份再编辑:# vi /etc/haproxy/haproxy.cfg global    chroot /var/lib/haproxy    daemon    group ...

  10. SQL Server 2012 - Transact-SQL

    变量 --全局变量 select @@VERSION --局部变量 declare @i int set @i=5 select @i 通配符:   like   'joh%',  %任意长度的任意字 ...