处理服务器内存不断升高


一、情况简述:

由于某应用服务器存在内存持续升高的情况,情况复杂,种种原因导致无法解决,告警不断,又逢假期,不想一直告警和手动处理。

思路为: 内存清理+ tomcat 重启 + 清理某进程

二、相关脚本及定时任务

1、根据内存大小决定是否重启tomcat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash

LOGFILE=/home/tom/test/initsh/Reload.log
MEMUSAGE=`free | awk 'NR==2{printf "%d\n", $3*100/$2 }'`
#FREECNTL= 60

export JAVA_HOME=/usr/local/jdk1.8.0_ggg

if [ $MEMUSAGE -gt 73 ]; then
echo "内存使用率超过80%" >$LOGFILE
free -lh >>$LOGFILE
ps -ef | grep tomcat | grep -v grep >> $LOGFILE
ps -ef | grep tomcat | grep -v grep|awk '{print $2}' >>$LOGFILE
ps -ef | grep tomcat | grep -v grep|awk '{print $2}' |xargs kill -9
echo "----------停止进程----------" >>$LOGFILE
date +%Y-%m-%d_%H:%M:%S >> $LOGFILE
sh /home/tom/test/tomache-tomcat-9.gg.gg/bin/startup.sh >> $LOGFILE
echo "----------启动进程----------" >> $LOGFILE
date +%Y-%m-%d_%H:%M:%S >> $LOGFILE
free -lh >> $LOGFILE

else
date +%Y-%m-%d_%H:%M:%S >> $LOGFILE
echo "内存使用率未超过80%" >>$LOGFILE
echo "-------内存占比为: `free | awk 'NR==2{printf "%d\n", $3*100/$2 }'` ------">>$LOGFILE
fi
1
2
3
4
*/10 * * * * sh /home/tom/test/initsh/ReloadTm.sh > /home/tom/test/initsh/crontab.log
每十分钟定时任务 用于特殊情况
*/30 17-23,0-8 * * 1-5 sh /home/tom/test/initsh/ReloadTm.sh > /home/tom/test/initsh/crontab.log
每三十分钟 非工作时间

2、内存清理

1
2
10 * * * * sync && echo 3 > /proc/sys/vm/drop_caches
每十分钟释放一次

3、清理某进程 (该进程自动拉起)

1
2
ps -ef | grep  KgEggSgg  | grep -v grep|awk '{print $2}'|xargs kill -9
ps -ef |grep KgEggSgg | grep -v grep

文章作者: caoyutao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 caoyutao !
评论
  目录