2011-02-02 14 views
3

リモートサーバーのTomcatにJavaアプリケーションをインストールするとします(Amazon AWSなど)。アプリケーションが回復不能な方法で失敗した場合、自動的にTomcatを再起動することをお勧めしますか? 多分、アプリケーション自体からこれを行う方法があるので、例外が非常に厄介であることがわかったら、すべてを再起動できますか?アプリケーションがクラッシュした場合、リモートサーバー上でTomcatを再起動する方法はありますか?

答えて

4

1つの可能性は、アプリケーションを監視(ポート、カスタムチェックなど)し、必要に応じてサーバー全体を再起動するウォッチドッグをインストールすることです。これは制御されたサブシェル上でcatalina.sh runを実行するbashスクリプトでもあります。

また、適切なモニタリングシステムでこれが可能です。たとえば、Zabbixでは、カスタム監視のチェックとアクションが許可されているため、サービスに到達できない場合は、事前にサービスを再起動できます。

もう1つの解決策は、既存のアプリケーションを停止/開始するためにTomcat managerを使用することです。関連するマネージャーURLを呼び出すApache Antスクリプトを使用してこれを行うことができます。ただし、アプリケーションが「ハード」になってサーバー全体がダウンすると、この解決策は適用されません。

4

興味深いソリューション:http://aujava.wordpress.com/2006/08/16/watchdog-for-tomcat/

は、あなただけに必要

#!/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 
+1

これはHTMLのアプローチを使用することを計画している場合は、次のようにしてください:atalive.html(単一のテキスト "YES")をアプリケーションに追加してください。少なくともsleepの代わりにcrontabを使用してください。 – Panthro

関連する問題