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. 用wamp5和ZendOptimizer搭建环境运行Discuz论坛

    用wamp5和ZendOptimizer搭建环境运行Discuz论坛 用wamp5和ZendOptimizer搭建环境运行Discuz论坛 一: 环境:      1:Windows操作系统(Linu ...

  2. XML 入门

    XML语法 所有 XML 元素都须有关闭标签 XML 标签对大小写敏感 XML 必须正确地嵌套 XML 文档必须有根元素 就像HTML一样,HTML必须有<html>根元素.XML也必须有 ...

  3. 深入了解Android蓝牙Bluetooth ——《总结篇》

    在我的上两篇博文中解说了有关android蓝牙的认识以及API的相关的介绍,蓝牙BLE的搜索,连接以及读取. 没有了解的童鞋们请參考: 深入了解Android蓝牙Bluetooth--<基础篇& ...

  4. CentOS系统中last命令的作用

    CentOS系统中last命令的作用是显示近期用户或终端的登录情况,它的使用权限是所有用户.通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统. 格式 last [—R] [—n] ...

  5. Unity脚本中各函数成员的生命周期

    在学习Unity时,掌握如何编写脚本是必须掌握的一项基本技能.但是关于Unity的游戏脚本中各函数的生命周期是怎样开始和结束的,它们的执行顺序是如何安排的?这一点我们要清楚的了解. 我们知道Unity ...

  6. 【转】struts2.5框架使用通配符指定方法(常见错误)

    在学习struts框架时经常会使用到通配符调用方法,如下: <package name="shop" namespace="/" extends=&quo ...

  7. Ajax在ASP.NET MVC中上传

    HomeController.cs using System; using System.Collections.Generic; using System.Linq; using System.We ...

  8. 编写Unity3D着色器的三种方式

    不管你会不会写Unity3D的shader,估计你会知道,Unity3D编写shader有三种方式,这篇东西主要就是说一下这三种东西有什么区别,和大概是怎样用的. 先来列一下这三种方式: fixed ...

  9. js表单计算金额问题

    <table width="600" border="1" align="center" style="text-align ...

  10. Swift学习笔记之--类和对象

    通过在 class后接类名称来创建一个类.在类里边声明属性与声明常量或者变量的方法是相同的,唯一的区别的它们在类环境下.同样的,方法和函数的声明也是相同的写法 class Shape { func s ...