cd /usr/local

vim cleanCacheTime.sh

把以下代码粘贴进去

#!/bin/bash  

echo "start SyncCleanCache.sh..." >> /var/log/mem_detect.log

#系统分配的区总量
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}'` echo "已使用:" >> /var/log/mem_detect.log
echo $mem_used >> /var/log/mem_detect.log if (($mem_used != )); then #如果已被使用,则计算当前剩余free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0
mem_per=`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` echo "是否大于告警值:" >> /var/log/mem_detect.log
echo $mem_now >> /var/log/mem_detect.log #如果当前使用超过80%(即剩余小于20%,上面的返回值等于0),释放内存
if (($mem_now == )); then echo "more than percent 80..." >> /var/log/mem_detect.log #重启tomcat并清空缓存
pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk '{print $2}'`
echo $pid
if [ -n "$pid" ]
then
{
echo ===========shutdown================
/usr/local/apache-tomcat-7.0./bin/shutdown.sh
sleep
pid=`ps aux | grep tomcat | grep -v grep | grep -v retomcat | awk '{print $2}'` sync
echo > /proc/sys/vm/drop_caches
echo > /proc/sys/vm/drop_caches
echo > /proc/sys/vm/drop_caches if [ -n "$pid" ]
then
{
sleep
echo ========kill tomcat==============
kill - $pid
sync
echo > /proc/sys/vm/drop_caches
echo > /proc/sys/vm/drop_caches
echo > /proc/sys/vm/drop_caches
}
fi
sleep
echo ===========startup.sh==============
/usr/local/apache-tomcat-7.0./bin/startup.sh
}
else
echo ===========startup.sh==============
/usr/local/apache-tomcat-7.0./bin/startup.sh fi sync
echo > /proc/sys/vm/drop_caches
echo > /proc/sys/vm/drop_caches
echo > /proc/sys/vm/drop_caches
#将release memory OK !写入temp文件夹的memstat_日期.log日志中
echo "--->release memory OK ! " >> /var/log/mem_detect.log fi
fi

授权

chmod 777 cleanCacheTime.sh

测试

./cleanCacheTime.sh

到日志文件中看是否有问题,若没有问题

crond -e

把下面这句粘贴进去并保存退出(每分钟执行一次)

*/1 * * * * /usr/local/cleanCacheTask.sh >>/usr/local/cleanCache.log

service crond start

结束

Linux定时检测内存,若使用率超过指标,重启Tomcat并清空内存的更多相关文章

  1. jvm 内存溢出 在myeclipse中加大tomcat的jvm内存 java.lang.OutOfMemoryError: PermGen space

    使用myeclipse启动两个SSH2的部署在tomcat6下的项目 报出java.lang.OutOfMemoryError: PermGen space 解决办法: 在myeclipse中加大jv ...

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

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

  3. 增加定时检测linux占用内存,及时清理功能

    centos为了提高效率,把部分使用过的文件缓存到了内存里. 如果是这样的话,我又不需要这样的文件性能,那就可以释放.如下两个命令就可以: #sync #echo 3 > /proc/sys/v ...

  4. 如何在linux下检测内存泄漏

    之前的文章应用 Valgrind 发现 Linux 程序的内存问题中介绍了利用Linux系统工具valgrind检测内存泄露的简单用法,本文实现了一个检测内存泄露的工具,包括了原理说明以及实现细节. ...

  5. 如何在linux下检测内存泄漏(转)

    本文转自:http://www.ibm.com/developerworks/cn/linux/l-mleak/ 本文针对 linux 下的 C++ 程序的内存泄漏的检测方法及其实现进行探讨.其中包括 ...

  6. ES 内存使用和GC指标——主节点每30秒会去检查其他节点的状态,如果任何节点的垃圾回收时间超过30秒(Garbage collection duration),则会导致主节点任务该节点脱离集群。

    摘录自:http://blog.csdn.net/yangwenbo214/article/details/74000458 内存使用和GC指标 在运行Elasticsearch时,内存是您要密切监控 ...

  7. CentOS7 定时检测进程占用内存大小,执行重启进程操作(xjl456852原创)

    在使用CentOS时,个别程序的进程会一直增大,直到宕机.但是这种程序本身有没有更好的版本使用(比如ngrok免费就这样,付费的就没这个问题),所以想写一个脚本定时检测一下这个程序的情况,决定是否需要 ...

  8. Linux性能检测常用的10个基本命令

    检测性能的10个命令汇总 uptim dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat -xz 1 free -m sar -n DEV 1 ...

  9. Linux 性能检测常用的10个基本命令

    1.   uptime $ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.0212 该命令可以大致的看出计算机的整体 ...

随机推荐

  1. get提交

    <?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action { //显示用户 public function index(){ $Use ...

  2. Ubuntu之Docker安装

    1.添加官方的GPG key到系统 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 2.添加D ...

  3. Eclipse 调试总进入Spring代理的解决办法

    一直都是跳入代理类中,手动切换查看内容,还以为别人也是这样,结果被告知不是.瞬间囧囧. 搜了一番,看起来有两个办法. 第一个:使用step filter,过滤掉不需要的package.--未测试 第二 ...

  4. e678. 尖锐化图像

    This example demonstrates a 3x3 kernel that sharpens an image. Kernel kernel = new Kernel(3, 3, new ...

  5. 【转】Linux内核源码分析方法

    一.内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径.我们都 ...

  6. 利用Graphviz 可视化GO 数据库

    GO是一个同源蛋白的数据库,按照三大类别BP(生物学过程), MF(分子功能), CC(细胞组分) 对基因的产物-蛋白质进行了分类: 在GO数据库中,本质上是一个有向无环图的数据结构,在三大类别之下, ...

  7. PHP删除目录及目录下所有文件或删除指定文件

    PHP删除目录及目录下所有文件或删除指定文件 <?php header("content-type:text/html;charset=utf-8"); /** * 删除目录 ...

  8. linux nfs

    linux(十四)之linux NFS服务管理 学到这里差不多就结束了linux的基础学习了,其实linux的内容并不难,我们要经常的反复的去操作它,多多和它去联络感情才能很好的掌握这个linux. ...

  9. SQL Server 查看数据库在数据缓存(data cache)中占用的空间大小

    use master go select * from sys.dm_os_buffer_descriptors go --查看数据库在数据缓存(data cache)中占用的空间大小 --由于每个数 ...

  10. MathType中公式不对齐怎么办

    MathType是一款专门用来编辑数学公式的数学公式编辑器,利用它可以在文档中快速编辑公式,与文字完美结合,可以编辑出各种各样的数学符号与公式,省下你不少的时间. 一.对齐上标与下标 MathType ...