Java Platform, Enterprise Edition アプリケーションでのハング・スレッド

WebSphere® Application Server は、スレッド・アクティビティーをモニターし、スレッド・アクティビティーが非アクティブになると診断アクションを実行します。

スレッド・モニターのしきい値で定義された時間より長くスレッドがアクティブであることを WebSphere が検出すると、アプリケーション・サーバーは以下のアクションをとります。
  • 警告を WebSphere Application Server のログに記録します。 このログには、ハングしているスレッドの名前、およびそのスレッドがアクティブになってからの経過時間が示されます。 次のメッセージがログに書き込まれます。
    WSVR0605W: Thread threadname has been active for
    hangtime and may be hung.  There are totalthreads threads in total in the server that may be hung.
    ここで、threadname は JVM スレッド・ダンプ内に表示される名前であり、 hangtime はスレッドがアクティブになってからの概算経過時間を示し、 totalthreads はシステム・スレッドの全体的な評価を示します。
  • Java™ Management Extensions (JMX) 通知を発行します。この通知はサード・パーティー・ツールを使用可能にして、 イベントをキャッチし、サーバーの JVM スレッド・ダンプのトリガーや、 電子ページまたは E メールの発行など、適切なアクションをとります。 以下の JMX 通知イベントは、 com.ibm.websphere.management.NotificationConstants クラス内に定義されます。
    • TYPE_THREAD_MONITOR_THREAD_HUNG このイベントは、 (潜在的な) ハング・スレッドの検出によってトリガーされます。
    • TYPE_THREAD_MONITOR_THREAD_CLEAR このイベントがトリガーされるのは、 これまでハングしていると報告されていたスレッドが作業を完了した場合です。 詳しくは、偽のアラームについてのセクションを参照してください。
  • パフォーマンス・モニター・インフラストラクチャー (PMI) データ・カウンター内の変更をトリガーします。 これらの PMI データ・カウンターは、Tivoli® Performance Viewer など、 各種のツールによって使用されて、 パフォーマンス分析を提供します。
  • パフォーマンス・モニター・インフラストラクチャー (PMI) データ・カウンター内の変更をトリガーします。 これらの PMI データ・カウンターは、 Tivoli Performance Viewer など、 各種のツールによって使用され、 パフォーマンス分析を提供します。

偽のアラーム

作業が実際に完了すると、 2 番目のメッセージ・セットである、 通知と PMI のイベントが生成されて偽のアラームが識別されます。 次のメッセージがログに書き込まれます。
WSVR0606W: Thread threadname was previously reported to be 
hung but has completed. It was active for approximately hangtime. There are totalthreads threads in total in the server that still 
may be hung.
ここで、 threadname は JVM スレッド・ダンプ内に表示される名前であり、 hangtime はスレッドがアクティブになってからの概算経過時間を示し、 totalthreads はシステム・スレッドの全体的な評価を示します。

ハング時間しきい値の自動調整

スレッド・モニターは、 発行される偽のアラームが多すぎる (ハング・メッセージとクリア・メッセージのペアの数によって判別される) と判断すると、 自動的にしきい値を調整することができます。 この調整が行われると、次のメッセージがログに書き込まれます。
WSVR0607W: Too many thread hangs have been falsely reported.
The hang 
threshold is now being set to thresholdtime.
ここで、 thresholdtime は、 スレッドがハングしていると見なされるまでアクティブでいられる時間 (秒単位) です。

ユーザーは、 WebSphere Application Server が自動的にハング時間のしきい値を調整するのを妨げることもできます。ハング検出ポリシーの構成を参照してください。

システム・アラーム

アプリケーション・サーバーは、システム・アラームを実行するスレッドのアクティビティーをモニターしています。 アラーム・スレッド・モニターのしきい値で定義された時間よりも長い間、システム・アラーム・スレッドがアクティブである場合、アプリケーション・サーバーは次の警告をシステム・ログに記録します。 このメッセージは、応答していないスレッドの名前、スレッドが既にアクティブになっている時間の長さ、およびスレッドの例外スタックを示しており、これによりシステム・コンポーネントが識別されます。

UTLS0008W: アラーム・スレッド threadname は、n ミリ秒の間アクティブになっており、ハングする可能性があります。(The alarm thread threadname has been active for n milliseconds and may be hung.)
totalthreadsthreadstack   

このメッセージにおいて、threadname は JVM スレッド・ダンプに表示される名前、n はスレッドがアクティブであった時間の概算の長さ、totalthreads はシステム・スレッドの全体的な評価、threadstack はスレッドの例外スタックを示しています。

アラーム処理が最終的に完了すると、次のメッセージがシステム・ログに書き込まれます。 このメッセージは、偽のアラームを生成したスレッドを示しています。

UTLS0009W: アラーム・スレッド threadname は、ハングすると以前報告されましたが、完了しています。(Alarm Thread threadname was previously reported to be hung but has completed.)
約 n ミリ秒間、アクティブになっていました。

このメッセージにおいて、threadname は JVM スレッド・ダンプに表示される名前、n はスレッドがアクティブであった時間の概算の長さを示しています。

通常、システム・アラームは、大きな負荷は処理しません。なぜなら、そのようなアクティビティーは、以降のシステム・アラームの処理速度を低下させ、サーバーの動作に影響を与える可能性があるためです。 UTLS0008W メッセージの目的は、システム・アラーム動作によって引き起こされる可能性のある問題を IBM サポート担当員が調査できるようにすることです。

すべてのシステム・アラームは、共通のアラーム・スレッド・プールを共有しています。 このスレッド・プールのモニターを管理するプロパティーは、管理コンソールを使用して調整できます。 アラーム・スレッド・モニターの検査間隔またはしきい値を調整することで、WebSphere がアラーム・ハング・スレッド・メッセージを生成する頻度を下げることができます。 これらの設定を変更する方法については、トピック『ハング検出ポリシーの構成』を参照してください。


トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=ctrb_hangdetection
ファイル名:ctrb_hangdetection.html