如果Web服务(tomcat7)没有响应,请重新启动

时间:2012-12-04 14:24:37

标签: shell unix cron tomcat7 wget

我在Tomcat服务器上运行Web应用程序。服务器代码中存在难以检测的问题,导致它每天崩溃一次或两次。我有空的时候会去挖掘它来纠正它。但直到那天,在一个有问题的情况下重新启动tomcat(/etc/init.d/tomcat7重启)或基本上重启机器似乎也是现在很好的解决方案。我想用wget而不是grep或其他东西检测服务器的活跃性,因为即使tomcat正在运行我的服务可能会关闭。

wget localhost:8080/MyService/

输出

--2012-12-04 14:10:20--  http://localhost:8080/MyService/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2777 (2.7K) [text/html]
Saving to: “index.html.3”

100%[======================================>] 2,777       --.-K/s   in 0s

2012-12-04 14:10:20 (223 MB/s) - “index.html.3” saved [2777/2777]

当我的服务到了。和输出

Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:8080... failed: Connection refused.

或者在说完

后卡住了
--2012-12-04 14:07:34--  http://localhost:8080/MyService/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response...

否则。你能给我一个带有cron作业的shell脚本吗?如果有替代方案,我宁愿不使用cron。

2 个答案:

答案 0 :(得分:0)

为什么不使用cron呢?无论如何,为tomcat + watchdog注意了一下,发现了以下blog post

应该给你并想出如何解决你的问题。

HTH

答案 1 :(得分:0)

好的,我找到了在/etc/rc5.d/下添加脚本的解决方案http://www.linuxforums.org/forum/mandriva-linux/27687-how-make-command-run-startup.html

!/bin/bash

echo "Restarted: " `date`  >> /home/ec2-user/reboot.log

sleep 600

while [ 1 ]
do
    var=`php -f /home/ec2-user/lastEntry.php`

    if [ ${#var} -gt 3 ]
    then
        echo "Restarting: " `date` >> /home/ec2-user/reboot.log
        reboot
    fi
    sleep 60
done

最后一个查询检查表以查看最近10分钟内是否有任何条目。

<?php
mysql_connect('ip', 'uname', 'pass') or die(mysql_error());
mysql_select_db("db") or die(mysql_error());

$query="SELECT min(now()-time) as last FROM table;";

$result = mysql_query($query)or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row['last'];
?>

有更直接的方法可以检查tomcat是否正在运行,但这会检查最后一个输出,以便更准确地检查它。