linux服务器tomcat挂掉了以及进程保护

一:tomcat挂了

linux上tomcat服务器突然挂掉了,查看catalina.out没有发现什么错误信息。

查看/var/log/messages文件发现是因为内存不足系统杀死的

kernel: Out of memory: Kill process 15983 (java) score 149 or sacrifice child

linux 系统内存满了自动杀了不受保护的线程

需要将Java进程加入到受保护的进程里

二:进程保护

写一个脚本来监测tomcat进程是否停掉,如果挂了,自动拉起,脚本如下:

#!/bin/bash
echo "Start"
URL="http://132.232.132.102/"

curlit()
{
#测试有没有进来
#echo "??"
#15是连接超时时间,若访问网站超过15s没有正确响应200,则判断为无法访问。
curl --connect-timeout 15 --max-time 20 --head --silent "$URL" | grep '200'
}

doit()
{
#如果服务器没有正常返回200,即出现异常。执行下述命令:
if ! curlit;then
sleep 20
#top -n 1 -b >> /var/log/log.log  
#适用于一条java进程
# 这条语句中ps -ef|grep java|grep -v grep为查询进程中java进程同时排除本身语句,用awk找到第二列信息,返回状态扔到黑洞中。 
#kill `ps -ef|grep java|grep -v grep |awk '{print $2}'` > /dev/null 2>&1
#适用于多个java进程
kill $(ps aux|grep "/usr/local/tomcat/apache-tomcat-7.0.72/conf/logging.properties"|grep -v grep|awk '{print $2}')
sleep 2
#启动tomcat
cd /data/
/data/startTomcat.sh
# 写入日志  
echo $(date) "Tomcat Restart" >> /var/log/log.log
#重启完成后等待,然后再次尝试一次 
sleep 60
# 如果仍然无法访问,则:  
if ! curlit; then
echo "@"
# 写入apache依然重启失效的日志 
echo $(date) "Failed" >> /var/log/log.log

fi
sleep 180
fi
}
sleep 3
# 运行脚本后才开始正式工作(防止重启服务器后由于tomcat还没开始启动造成误判)  
# 主循环体 
doit

猜你喜欢

转载自blog.csdn.net/qq_35663772/article/details/85714270