概要
- WebSphere Application Server(WAS)には、ハングの可能性を検知してログに出力する機能がある
- しきい値に設定した時間を超える処理時間がかかっている場合に、SystemOut.logにログが出力される
- 通常の処理完了時間の範囲を見積もり、そこからしきい値を設定すべき
- あくまでも検知するのは「ハングの可能性」である。実際にハングが発生しているとは限らない
ハングとは?
下記のような原因で発生する、システムの機能低下の状態。
自然解消せず、利用者や監視ツールにより発見されるまで、そのままの状態が継続してしまうこともある。
- 無限ループなどの単純なソフトウェアの障害
- リソース・デッドロックやリソースの取得待ちなどの外部リソースとの接続上の障害
検出時の SystemOut.log のメッセージの例
[11/08/10 15:55:33:746 JST] 890e8c75 ThreadMonitor W WSVR0605W: スレッド "Servlet.Engine.Transports : 1293" (2ca38c77) が 612,791 ミリ秒間アクティブで、ハングしている可能性があります。サーバー内には、ハングの可能性のあるスレッドが合計 1 本あります
引用元: WebSphere Application Server構築・運用バイブル【WAS8.5/8.0/7.0対応】 409ページ
どのように対処すべきか
利用しているアプリケーションにおいて、該当の処理が通常の処理時間内なのか、異常な処理時間と言えるのかを確認する。
通常の処理時間である場合
ハング検出ポリシーの構成 (English: Configuring the hang detection policy) を見直し、誤検知されないように設定値を修正する。
異常な処理時間である場合
外部リソースとの接続(コネクションプールなど)の設定値の見直しをしたり、アプリケーションの改修を検討する。