如果应用程序崩溃,如何在远程服务器上重启Tomcat?

时间:2011-02-02 11:23:35

标签: tomcat

假设我在远程服务器上将Tom app放在Tomcat上,比如亚马逊AWS。如果应用程序以不可恢复的方式失败,您建议如何重新启动tomcat AUTOMATICALLY? 也许有一种方法可以从应用程序本身做到这一点,所以如果我看到异常非常讨厌我可以重新启动它吗?

3 个答案:

答案 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