1 简介
最近做了一个应用,访问多个大华的门禁出入设备,时间长了之后,就会报错:超过最大连接数。
之后就会一致访问失败,直到重新启动tomcat
暂时不知道什么原因,为了处理这个问题,只能先做个定时任务去查日志,出现这个错误就重新启动tomcat。
2 脚本
在/usr/local/programs/shell_tomcat_log创建了一个auto-restart.sh
#! /bin/bash
source /etc/profile
tomcatdir=/usr/local/programs/apache-tomcat-8.5.88/
sys_log=catalina.out
err_log=/usr/local/programs/shell_tomcat_log/error_log/err.log
err_time=`date +%Y-%m-%d_%H:%M`
restart_log=/usr/local/programs/shell_tomcat_log/restart_log/restart-system.log
grep -E -i "超过最大连接数" /usr/local/programs/apache-tomcat-8.5.88/logs/catalina.out >$err_log
if [ -s $err_log ];then
echo ${err_time}_${tomcatdir}"_超过最大连接数自动重启------" >>$restart_log
mv /usr/local/programs/apache-tomcat-8.5.88/logs/catalina.out /usr/local/programs/apache-tomcat-8.5.88/logs/${err_time}.out
/usr/local/programs/apache-tomcat-8.5.88/bin/shutdown.sh
/usr/local/programs/apache-tomcat-8.5.88/bin/startup.sh
else echo ${err_time}_${tomcatdir}"_没有超过最大连接数异常" >>$restart_log
fi
脚本说明
#! /bin/bash
source /etc/profile //引入系统环境变量,主要是为了引进tomcat和jdk的环境变量
tomcatdir=/usr/local/programs/apache-tomcat-8.5.88/ //tomcat的安装目录
sys_log=catalina.out //要查看的日志文件的名称
err_log=/usr/local/programs/shell_tomcat_log/error_log/err.log //执行本定时,发现出现了那个错误时,记录到这里
err_time=`date +%Y-%m-%d_%H:%M`
restart_log=/usr/local/programs/shell_tomcat_log/restart_log/restart-system.log // 执行定时时,记录执行的结果到这里
grep -E -i "超过最大连接数" /usr/local/programs/apache-tomcat-8.5.88/logs/catalina.out >$err_log //查找tomca日志文件,查找那个错误,如果有,把这个错误记录到err_log(每次覆盖之前的)
if [ -s $err_log ];then //如果err_log不为空,说明有那个错误
echo ${err_time}_${tomcatdir}"_超过最大连接数自动重启------" >>$restart_log // 输出日志到restart_log
mv /usr/local/programs/apache-tomcat-8.5.88/logs/catalina.out /usr/local/programs/apache-tomcat-8.5.88/logs/${err_time}.out //把tomcat日志文件重命名为yyyy-MM-dd_HH_mm.out
/usr/local/programs/apache-tomcat-8.5.88/bin/shutdown.sh //停止tomcat
/usr/local/programs/apache-tomcat-8.5.88/bin/startup.sh //启动tomcat 启动时会自动生成新的catalina.out文件
else echo ${err_time}_${tomcatdir}"_没有超过最大连接数异常" >>$restart_log //如果没有那个错误,输出日志到restart_log
fi
3 为它添加权限
chmod 777 auto-restart.sh
4 添加定时任务
执行以下命令,进入编辑状态
crontab -e
添加一下内容,一分钟执行一次
*/1 * * * * /usr/local/programs/shell_tomcat_log/auto-restart.sh
保存
查看定时任务
crontab -l
5 查看日志文件
/var/log/cron日志文件记录定时任务执行情况
tail -f /var/log/cron