Linux のスケジュールされたタスクのアクセス ページが、quartz クラスター_html/css_WEB-ITnose に置き換わります。

WBOY
リリース: 2016-06-24 11:58:18
オリジナル
1198 人が閲覧しました

ビジネスの背景:

Web には定期的に実行する必要があるビジネスがよくありますが、クラスター環境では、複数のサーバーでスケジュールされたタスクが同時に開始されると、データベースがハングします。スケジュールされた 1 つのタスクがデータベースにアクセスする必要があります。

この問題を解決する方法:

1. マルチサーバー クラスターでは、ディレクトリがマウントされます。スケジュールされたタスクを保存するサーバーは 1 つだけです。マウントするときに、スケジュールされたタスクの構成ファイルを除外し、1 つのサーバーのみがスケジュールされたタスクを有効にできるようにします。

2. スケジュールされたタスクを実行するために別のサーバーをデプロイします

3. Linux スクリプトを使用してクラスターサーバーのページまたはアクションにアクセスします リクエストを受信し、スケジュールされたタスクを実行するサーバーが必要です。

ここでお話したいのは 3 番目の方法です。欠点は、アクセスされるサーバーのページまたはアクションがセキュリティ制限を受ける必要があることです。


まず、Linux のスケジュールされたタスクを設定します:

vi /etc/crondtab

                  <p class="sycode">                      <p class="sycode">       0 1 * * * root /dbdata/backup/cms/async.sh      </p>                  </p>
ログイン後にコピー

次に、async.sh で、リクエストが失敗した場合に電子メールアラームを送信します:

              <p class="sycode">                  <p class="sycode">      #!/bin/bash     </p>                  <p class="sycode">      Dir="/home/webtrn/CrontabDir"     </p>                  <p class="sycode">      echo `date +"%Y-%m-%d-%H-%M"` >> $Dir/checklearntime.log     </p>                  <p class="sycode">      wget -t1 http://www.baidu.com/checkserver/XXX.jsp -o $Dir/wgetchecklearntime.log     </p>                  <p class="sycode">      grep -q "404" $Dir/wgetchecklearntime.log || grep -q "302" $Dir/wgetchecklearntime.log     </p>                  <p class="sycode">      if [ $? != 0 ]; then     </p>                  <p class="sycode">      echo "checklearntime have done" >> $Dir/checklearntime.log     </p>                  <p class="sycode">      else     </p>                  <p class="sycode">      echo "checklearntime is error" >> $Dir/checklearntime.log     </p>                  <p class="sycode">      echo "checklearntime is error" | mail -s "webtrn" zhugaojian@whaty.com     </p>                  <p class="sycode">      echo "checklearntime is error" | mail -s "webtrn" jinqingwen@whaty.com     </p>                  <p class="sycode">      fi     </p>                  <p class="sycode">      rm -f XXX.jsp     </p>                  <p class="sycode">      rm -f $Dir/wgetchecklearntime.log     </p>              </p>
ログイン後にコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート