WebSphere® Application Server のハング検出オプションは、デフォルトでオンになっています。 ご使用のアプリケーションと環境に対応するように、ハング検出ポリシーを構成して、
起こり得るハングの報告を可能にし、サーバーの障害を早期に検出することができます。 ハング・スレッドが検出されると、 WebSphere Application Server から通知され、問題のトラブルシューティングを行うことができます。
事前処理
Java™ Platform, Enterprise Edition (Java EE) アプリケーションでよく発生するエラーは、ハング・スレッドです。 ハング・スレッドは、単純なソフトウェア障害 (無限ループなど) から生じることも、
より複雑な原因 (例えば、リソース・デッドロック) から生じることもあります。 コードが無限ループ内で実行している場合など、
スレッドが際限のないコード・パスを実行している場合には、
CPU 時間などのシステム・リソースは、このハング・トランザクションによって消費されることがあります。 あるいは、デッドロック・シナリオの場合と同様、
すべてのリソースが使用されていないにもかかわらず、
システムが無応答となる場合があります。 ユーザーまたはモニター・ツールがこの問題を報告しない限り、
システムは、無期限にこの機能低下した状態のままとなる可能性があります。
ハング検出ポリシーを使用すると、
作業単位が完了するには長すぎる時間を指定することができます。 スレッド・モニターは、
システム内のすべての管理対象スレッド (例えば、
Web コンテナー・スレッドおよびオブジェクト・リクエスト・ブローカー (ORB) スレッド) を検査することができます。 アプリケーションによって作成されたスレッドである、管理対象外のスレッドは、
モニターされません。 詳しくは、「 Hung threads in Java Platform, Enterprise Edition applications」を参照してください。
このタスクの概要
デフォルトでは、スレッド・ハング検出オプションは使用可能となっています。 ハング検出ポリシーの値を調整する、あるいは、ハング検出を完全に使用不可にするには:
手順
- 管理コンソールで、 「サーバー」 > 「アプリケーション・サーバー」 > 「server_name」をクリックします。
- 「サーバー・インフラストラクチャー」の下で、 「管理」 > 「カスタム・プロパティー」をクリックします。
- 「新規」をクリックします。
- 以下のプロパティーを追加します。
| 情報 |
説明 |
| 名前 |
com.ibm.websphere.threadmonitor.interval |
| 値 |
選択されているアプリケーション・サーバーの管理対象スレッドに対して、問い合わせが行われる頻度 (秒数)。 |
| デフォルト |
180 秒 (3 分) |
| 情報 |
説明 |
| 名前 |
com.ibm.websphere.threadmonitor.threshold |
| 値 |
スレッドがハングしたと見なされるまでの、アクティブでいられる時間 (秒数)。 この時間より長くアクティブとして検出されたスレッドは、ハングとして報告されます。 |
| デフォルト |
600 秒 (10 分) |
| 情報 |
説明 |
| 名前 |
com.ibm.websphere.threadmonitor.false.alarm.threshold |
| 値 |
しきい値が自動的に引き上げられるまでに発生する false アラームの回数 (T)。 ハングとして報告されたスレッドが最終的に作業を完了すると、false アラームが発生する場合があります。 こうしたイベントが多数発生することは、しきい値が小さすぎることを示しています。 ハング検出機能は、こうした状況に自動的に対応することができます。false アラーム T 回ごとに、しきい値 T が 1.5 の因数ずつ引き上げられます。 自動調整を使用不可にするには、値をゼロ以下に設定します。 |
| デフォルト |
100 |
| 情報 |
説明 |
| 名前 |
com.ibm.websphere.threadmonitor.dump.java |
| 値 |
このプロパティーは、dumpThreads 関数を呼び出します。 ハング・スレッドが検出されて WSVR0605W メッセージが出力されるときに dumpThreads 関数が実行されるようにするには、true に設定します。 javacore ダンプの
スレッド・セクションを分析して、報告されたスレッドおよび他の関連スレッド
の活動内容を判別できます。
ハング・スレッドが検出されて WSVR0605W メッセージが出力されるときに dumpThreads 関数が実行されるようにするには、1 から Integer.MAX_VALUE までの範囲の整数値に設定します。 この整数値は、dumpThreads の最大実行回数です。 注: WSVR0605W メッセージをオフにするには、 com.ibm.websphere.threadmonitor.interval=0を設定します。
![[AIX Solaris HP-UX Linux Windows]](../images/ngdist.svg) デフォルトでは、 dumpThreads 関数は javacore ダンプを作成します。 このダンプの作成を無効にする方法については、トピック『スクリプトによるサーバー・プロセスにおけるスレッドのダンプ』を参照してください。 このダンプの内容と影響について詳しくは、「 Java Diagnostics Guide」を参照してください。
|
| デフォルト |
false (0) |
| 情報 |
説明 |
| 名前 |
com.ibm.websphere.threadmonitor.dump.java.track |
| 値 |
このプロパティーは、スレッドがハングしたままでいる間に、モニターが何回の間隔にわたって dumpThreads 関数を呼び出すのかを指定します。
2 から com.ibm.websphere.threadmonitor.dump.java までの範囲の整数値に設定すると、
スレッドがハングしたままでいる間に、dumpThreads 関数が後続の何回かのモニター間隔にわたって実行されます。 この整数値は、
ハング・スレッドのトラッキングのために dumpThreads が実行される最大回数を示します。 例えば、値 2 に設定すると、
スレッド・モニターは dumpThreads をハング・スレッドに対して最大 2 回実行し、
スレッドが最初にハングしていると検出されたときに 1 回実行します。 スレッド・モニターは、
次のスレッド・モニター間隔中にスレッドがハングしたままである場合は、dumpThreadsand をもう一度実行できます。
このプロパティーは、
com.ibm.websphere.threadmonitor.dump.java プロパティーと一緒でないと使用できません。
|
| デフォルト |
(0) 間隔 |
- オプション: システム・アラームが実行されるスレッドのアクティビティーをモニターする場合は、以下の JVM 汎用引数をサーバー設定に追加します。
| 情報 |
説明 |
| 名前 |
-Dcom.ibm.websphere.alarmthreadmonitor.generate.javacore |
| 値 |
システム・アラーム・スレッドのハングが検出
されたときに javacore ダンプが作成されるようにするには、任意の値に設定します。 javacore ダンプの
スレッド・セクションを分析して、報告されたスレッドおよび他の関連スレッド
の活動内容を判別できます。 |
| デフォルト |
設定解除 |
| 情報 |
説明 |
| 名前 |
-Dcom.ibm.websphere.alarmthreadmonitor.checkinterval.millis |
| 値 |
システム・アラーム・スレッドが検査される頻度
をミリ秒単位で指定します。 システム・アラーム・ハング・スレッドの検出を
無効にするには、値ゼロを設定します。 最大インターバルは 600000 (10 分) です。 |
| デフォルト |
10000 (10 秒) |
| 情報 |
説明 |
| 名前 |
-Dcom.ibm.websphere.alarmthreadmonitor.threshold.millis |
| 値 |
10000 から 600000 (10 分) の間の整数値を設定します。 この引数は、システム・アラーム・スレッドが応答しないと見なされるまでの、
アクティブでいられる時間をミリ秒単位で指定します。 システム・アラーム・スレッドは、この時間よりも長く非アクティブであることが検出されると、
ハングしていると報告されます。 |
| デフォルト |
10000 (10 秒) |
これらの引数をサーバー設定に追加するには、
以下のアクションを実行します。
- 管理コンソールの「サーバー・インフラストラクチャー」の下の「サーバー設定」ページで、 をクリックします。
- を選択します。
- 引数を JVM 汎用引数セクションに追加します。
- 「適用」をクリックする。
- 「OK」をクリックします。
- 変更を保存します。
- アプリケーション・サーバーを再始動して変更を有効にします。