0

Tomcat サーバーで Web アプリを実行しています。サーバー コード内に、検出が困難な問題があり、毎日 1、2 回クラッシュします。時間があるときに掘り下げて修正します。しかし、その日までは、Tomcat を再起動する (/etc/init.d/tomcat7 restart) か、基本的にマシンを再起動することが問題のある場合には、今のところかなり良い解決策のようです。tomcatが実行されていてもサービスがダウンしている可能性があるため、grepなどの代わりにwgetを使用してサーバーの活性を検出したいと考えています。

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 ジョブまたはその他の機能を備えたシェル スクリプトを提供してもらえますか。代替手段がある場合は、cron を使用しないことを好みます。

4

2 に答える 2

0

OKここで説明されているように/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が実行されているかどうかを確認するより簡単な方法がありますが、これは最後の出力を確認するため、より正確に確認できます。

于 2012-12-04T18:51:41.683 に答える
0

そのためにcronを使用しないのはなぜですか?とにかく、次のブログ投稿tomcat + watchdogを探して見つけました。

問題を解決する方法とアイデアを提供する必要があります。

h番目

于 2012-12-04T15:25:27.657 に答える