2011-02-02 52 views

回答

4

一種可能性是安裝監視器(例如,在端口上,一些自定義檢查等)應用程序,並且如果必要的話重新啓動整個服務器。這甚至可以是一個bash腳本,它在受控的子shell上執行catalina.sh run

體面的監測系統也允許這樣做。例如,Zabbix允許自定義監視檢查和操作,因此如果服務無法訪問,它可以主動重新啓動它。

另一種解決方案是使用Tomcat manager來停止/啓動現有的應用程序。您可以通過調用相關管理器URL的Apache Ant腳本執行此操作。但是,如果應用程序「硬」死並將整個服務器關閉,則此解決方案不適用。

4

沒有這裏的任何程序有趣的解決方案: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 
+1

這不是一個好的做法....如果您打算使用HTML方法,最少使用crontab而不是睡眠。 – Panthro 2014-04-02 12:40:49

相關問題