场景:有的时候tomcat下的应用性能不佳或者其他原因,导致tomcat运行一段时间后,因多并发响应或者其他原因,会自动停掉,为了防止替程序员背锅,可以通过定时检查相关服务是否正常启动,没有启动写入日志,并重启该服务,暂时缓解应用方面的缺陷,尤其是外包的应用,质量一般的应用。
解决方案:
1、编写脚本 监听给服务的端口,是否正常运行。如果正常,则记录当前服务正常并记录日志中, 如果 该端口 无法监听,则判断此服务异常,尝试重启该服务并记录到日志。
2、启用crond, 设置crontab ,定时执行该脚本。
具体代码如下:
1、shell脚本:
#!/bin/bash
# Program:
# look the port and service is good
# History:
#2016-06-11 mcw first
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#netstat this tomcat is port ,if port ok ,log is ok, else restart this tomcat and log is restart
testing=$(netstat -tuln |grep ":8081") #监听端口
if [ "$testing" != "" ]; then
echo $(date)"tomcat-dzp is running in your system" >> /data0/logs/dzp.txt
else
sh /usr/local/apache-tomcat-6.0.35/bin/startup.sh && echo $(date)" tomcat-dzp is error and restart it" >>/data0/logs/dzp.txt
fi
2、启动 crond服务
service crond start
crontab -e
#设置
*/10 * * * * sh /data0/check/checkdzp.sh #每10分钟检查一次