假设我在远程服务器上将Tom app放在Tomcat上,比如亚马逊AWS。如果应用程序以不可恢复的方式失败,您建议如何重新启动tomcat AUTOMATICALLY? 也许有一种方法可以从应用程序本身做到这一点,所以如果我看到异常非常讨厌我可以重新启动它吗?
答案 0 :(得分:4)
一种可能性是安装一个监视程序,监视(例如在端口上,某些自定义检查等)应用程序,并在必要时重新启动整个服务器。这甚至可以是一个bash脚本,它在受控子shell上执行catalina.sh run
。
体面的监控系统也允许这样做。例如,Zabbix允许自定义监视检查和操作,因此如果服务无法访问,它可以主动重新启动它。
另一种解决方案是使用Tomcat manager来停止/启动现有应用程序。您可以通过调用相关管理器URL的Apache Ant脚本执行此操作。但是,如果应用程序“硬”死并将整个服务器关闭,则此解决方案不适用。
答案 1 :(得分:3)
这里没有任何程序的有趣解决方案:http://aujava.wordpress.com/2006/08/16/watchdog-for-tomcat/
您只需要将isalive.html(带有单个文本“YES”)添加到您的应用程序并使用以下脚本:
#!/bin/sh
HOST=127.0.0.1
PORT=8080
#infinite loop
while [ 1 ]
do
#try to access tomcat's page
RES=`wget -O - -o /dev/null --proxy=off http://${HOST}:${PORT}/isalive.html | awk '{ print $1 }'`
echo got ${RES}
#decide on reply
if [ "$RES" = "YES" ]
then
echo tomcat is responding on $HOST:$PORT
else
echo tomcat seems to be dead.
echo Killing...
for thepin in `ps -Af | grep -v grep | grep tomcat | grep catalina | awk '{ print $2 }'`
do
kill -9 ${thepin}
done
echo Starting...
sudo -u tomcat /usr/local/tomcat/bin/startup.sh
fi
sleep 60
done
答案 2 :(得分:1)
我建议看一下monit实用程序。使用monit,您可以轻松监控服务,资源使用情况,检查网址 - 确保服务按预期响应,并在出现错误时启动重启http://mmonit.com/monit/documentation/monit.html#connection_testing_using_the_url_notation