開発Blog

intra-mart Advent Calendar 2013 第11日:Resin HealthSystemのご紹介

投稿日:2013-12-11 更新日:

この記事は、intra-mart Advent Calendar 2013 第10日の記事です。

Resinは、アプリケーションが動作しているResin本体とは別にwatchdogという監視サーバが動いていて、Resin本体を監視しています。

ちなみに、先日ご紹介した、Resin Adminは、このwatchdogで監視して取得した情報を参照する画面という位置づけです。

で、その動作設定をしているのが、conf/health.xmlというファイルです。

そのhealth.xml自体かなり長いXMLファイルですが、その中で重要なのは、以下の2ヶ所で

の部分です。

<health:HealthSystem>は、

  • <enabled>:HealthSystem自体の有効無効(デフォルト:true)
  • <startup-delay>:起動から、HealthSystemでの判定動作の遅延時間指定。(この時間中にエラーになっても処理は行われない。)(デフォルト:15分)
  • <period>:監視間隔(デフォルト:5分)
  • <recheck-period>:問題発生後の再確認間隔(デフォルト:30秒)
  • <recheck-max>:問題発生後の再確認最大回数(デフォルト:5回)

というHealthSystemの全体的な動作指定。

<health:ActionSequence>は、

  • <health:IfHealthCritical time="2m"/>:もし2分間ステータスがCriticalになったら、
  • <health:FailSafeRestart timeout="10m"/>タイムアウト時間(10分)まで、シャットダウン時の情報を収集
  • <health:DumpJmx/>:JMXのダンプを出力
  • <health:DumpThreads/>:スレッドダンプを出力
  • <health:DumpHeap/>:ピープダンプを出力
  • <health:DumpHeap hprof="true" hprof-path="${resin.logDirectory}/heap.hprof"/>:hprofで解析できるヒープダンプを指定ディレクトリ(log)に出力
  • <health:StartProfiler active-time="2m" wait="true"/>2分間分のプロファイルを取得
  • <health:Restart/>:Resinを再起動する。

という流れの指定になっています。

つまり、デフォルトの設定の場合、
Resin起動後15分以降、health.xmlで指定されている10項目の監視項目で、Criticalなステータスが2分以上継続した場合に再起動処理が動作する。
しかし、実際には、シャットダウン時の情報を収集処理で、約2分ほど経過した後に再起動となります。

よって、障害発生から、最短でも約4分経過しないと再起動されないということになっています。

私達も最初、なぜ、Criticalになっても再起動されないし、変なタイミングで再起動しているので不思議だったのですが、一個一個見ていってやっとわかりました。

参考ですが、弊社の社内システムでは、
30秒間隔で以下の監視を行い、起動後5分以降、もし2分間ステータスがCriticalになったら、30秒間のプロファイルを取得して再起動するようにしました。
つまり、障害発生から、約2分30秒で情報を取得して再起動するようにして運用しています。

監視項目(HttpStatus以外デフォルト値)

  • ConnectionPoolが最大値を超えていないか
  • Cpuの負荷が、95%以上でないか
  • HealthSystem自体が正常か
  • HttpStatus:iAPのログイン画面が正常に表示されるか
  • JvmDeadlock:JVMがデットロックでないか?
  • License:Resinのライセンスは有効か?
  • MemoryPermGen:JavaのPerm領域が正常か?(空きが1M以上)
  • MemoryTenured:JavaのTenured領域が正常か?(空きが1M以上)
  • Transaction:トランザクションの失敗はないか?

その他、メール送ったり、任意のシェル動かしたりできます。

さらに詳細を知りたい方は、cauchoのページを参照してください。

-開発Blog
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

IM-Workflowで承認時にも認証を行う方法

IM-Workflowでは、本当に本人が申請・承認しているかを証明するための仕組みとして、「認証確認(再認証)」を設定することができます。 この仕組みを利用すると、ワークフローの申請・承認を行うタイミ …

no image

EWS2017 「業務への適用イメージがすぐに湧く!  魔法の業務ロジック作成ツール『IM-LogicDesigner』実用例 10本勝負!」講演内容のご紹介

この記事では、EWS2017 Technology Track「業務への適用イメージがすぐに湧く!  魔法の業務ロジック作成ツール『IM-LogicDesigner』実用例 10本勝負!」での講演内容 …

no image

[トラブル事例] バッチプログラムが実行開始から6時間後に異常終了する。

  バッチプログラムが実行開始から6時間後に異常終了する。 -エラーメッセージ- java.sql.SQLException: can't create statement fro …

no image

SVF(SuperVisualFormade)とintra-martの連携について

※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。 最近、SuperVisualForm …

no image

カラーパターンの追加

イントラマートには標準で青赤緑灰橙のページカラーパターンが用意されていますが、実はこれを追加することができます。 と、そこまでは皆さんご存知かもしれませんが、実際にカラーパターンを自作して追加されてい …