Linux定时检测内存,若使用率超过指标,重启Tomcat并清空内存
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并清空内存的更多相关文章
- jvm 内存溢出 在myeclipse中加大tomcat的jvm内存 java.lang.OutOfMemoryError: PermGen space
使用myeclipse启动两个SSH2的部署在tomcat6下的项目 报出java.lang.OutOfMemoryError: PermGen space 解决办法: 在myeclipse中加大jv ...
- (转)增加定时检测linux占用内存,及时清理功能
增加定时检测linux占用内存,及时清理功能 原文:http://www.voidcn.com/article/p-wnmannom-boa.html free -m 查看,发现内存跑满了. 再 to ...
- 增加定时检测linux占用内存,及时清理功能
centos为了提高效率,把部分使用过的文件缓存到了内存里. 如果是这样的话,我又不需要这样的文件性能,那就可以释放.如下两个命令就可以: #sync #echo 3 > /proc/sys/v ...
- 如何在linux下检测内存泄漏
之前的文章应用 Valgrind 发现 Linux 程序的内存问题中介绍了利用Linux系统工具valgrind检测内存泄露的简单用法,本文实现了一个检测内存泄露的工具,包括了原理说明以及实现细节. ...
- 如何在linux下检测内存泄漏(转)
本文转自:http://www.ibm.com/developerworks/cn/linux/l-mleak/ 本文针对 linux 下的 C++ 程序的内存泄漏的检测方法及其实现进行探讨.其中包括 ...
- ES 内存使用和GC指标——主节点每30秒会去检查其他节点的状态,如果任何节点的垃圾回收时间超过30秒(Garbage collection duration),则会导致主节点任务该节点脱离集群。
摘录自:http://blog.csdn.net/yangwenbo214/article/details/74000458 内存使用和GC指标 在运行Elasticsearch时,内存是您要密切监控 ...
- CentOS7 定时检测进程占用内存大小,执行重启进程操作(xjl456852原创)
在使用CentOS时,个别程序的进程会一直增大,直到宕机.但是这种程序本身有没有更好的版本使用(比如ngrok免费就这样,付费的就没这个问题),所以想写一个脚本定时检测一下这个程序的情况,决定是否需要 ...
- Linux性能检测常用的10个基本命令
检测性能的10个命令汇总 uptim dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat -xz 1 free -m sar -n DEV 1 ...
- Linux 性能检测常用的10个基本命令
1. uptime $ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.0212 该命令可以大致的看出计算机的整体 ...
随机推荐
- selenium测试(Java)-- 验证信息(八)
package com.test.validationinfor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.f ...
- linux -- Ubuntu 安装搜狗输入法
在Ubuntu Kylin系统中,默认安装搜狗拼音输入法,但是在原生Ubuntu系统中则不是.这可以理解,毕竟搜狗输入法的Linux版有Kylin团队的不小功劳.由于搜狗输入法确实比Linux系统下其 ...
- asp.net mvc webconfig配置文件操作
读取web.config数据,可以不用编译.如发布后,非常有用web.config文件<configuration> <appSettings> <add key=&qu ...
- ThinkPHP的易忽视点小结
1.使用对象的方法插入数据 D用法. $Form = D('Form'); $data['title'] = 'ThinkPHP'; $data['content'] = '表单内容'; $Form- ...
- js焦点轮播图
汇集网上焦点轮播图的实现方式,自己试了下,不过鼠标悬浮停止动画和鼠标离开动画播放好像没生效,不太明白,最后两行代码中,为什么可以直接写stop和play.不用加括号调用函数么?求懂的大神指点! 所用知 ...
- MathType中常见的两种符号的运用
想要让公式编辑得快速又高效,MathType数学公式编辑器这个神助攻是少不了的.MathType是一款专用的数学公式编辑器,用它来编辑公式非常方便实用,并且排版也非常简单.下面介绍两种常见符号的应用. ...
- ASP.NET的用户控件
本文介绍如何在ASP.NET中创建用户控件,控件属性的动态修改以及控件的事件出发机制. 简介ASP.NET的服务端控件使得Web开发工作变得更为简单,功能更为强大.我们介绍过如何在ASP.NET页面中 ...
- C#设计模式系列:抽象工厂模式(AbstractFactory)
出自:http://www.cnblogs.com/libingql/archive/2012/12/09/2809754.html 1. 抽象工厂模式简介 1.1 定义 抽象工厂(Abstract ...
- ios button标记
在写项目的时候,for循环创建多个button,在需要设置背景图片和,需要标记所选中的button的需求, 在这里提供两种方法: 一: 1:把for循环创建的button全部装到一个新建的数组中,把他 ...
- 转:Android文件操作总结
http://www.cnblogs.com/devinzhang/archive/2012/01/19/2327597.html http://blog.sina.com.cn/s/blog_5a4 ...