1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WebSphere Application Serverのdiagnostic plans(診断計画)によるデータ収集

1
Posted at

概要

WebSphere Application Server Traditional環境においてdiagnostic plansによりアプリケーション・サーバーが任意のメッセージIDをトリガーとして、自動でDumpを生成することができます。

はじめに

WebSphere Application Server Traditional 環境では、カスタム・プロパティ "com.ibm.websphere.threadmonitor.dump.java=true" を使用することで、ハング・スレッド検出メッセージ WSVR0605Wが発生したときに javacore を生成することができます。

一方、diagnostic plans(診断計画) を利用すると、任意のメッセージ ID をトリガーとしてさまざまなDumpファイルを生成する設定を構成することができます。

診断計画を使用したトラブルシューティング・データの収集
https://www.ibm.com/docs/ja/was/9.0.5?topic=tools-collecting-troubleshooting-data-diagnostic-plans

ハング検出ポリシーの構成 — "com.ibm.websphere.threadmonitor.dump.java"
https://www.ibm.com/docs/ja/was-nd/9.0.5?topic=tools-configuring-hang-detection-policy

手順

diagnostic plans(診断計画)は、diagPlanMbeanを使用し構成し、wsadminコマンドにより開始します。

diagPlanMbeanを使用して、ハング検知時(WSVR0605W)にjavacore/heapdump/core dumpを取得することが可能です。

a. 該当AppServer名を指定

例)AppServer名 server1を指定

diagPlanMBean = AdminControl.queryNames('WebSphere:type=DiagPlanManager,process=server1,*')

b. 該当メッセージIDでどのようなDumpファイルを取得するか設定:

例)メッセージID:WSVR0605W出力時に30秒間隔をあけて、"javacore/heapdump/core dump"を3セット取得する設定

parms =["MATCH=TRACE:WSVR0605W*,JAVACORE,HEAPDUMP,SYSTEMCORE,DELAY=30,JAVACORE,HEAPDUMP,SYSTEMCORE,DELAY=30,JAVACORE,HEAPDUMP,SYSTEMCORE"]

上記を踏まえて以下のようなJythonスクリプト (*.py) を作成し、wsadminで実行し設定を有効にします。

diagplan.py
# Query to find the DiagnosticPlan MBean and create the objectName
diagPlanMBean = AdminControl.queryNames('WebSphere:type=DiagPlanManager,process=server1,*')
objName = AdminControl.makeObjectName(diagPlanMBean)

# Pass the diagnostic plan string as a parameter
parms =["MATCH=TRACE:WSVR0605W*,JAVACORE,HEAPDUMP,SYSTEMCORE,DELAY=30,JAVACORE,HEAPDUMP,SYSTEMCORE,DELAY=30,JAVACORE,HEAPDUMP,SYSTEMCORE"]

# Run the setDiagPlan method in the MBean with the diagnostic plan string
AdminControl.invoke_jmx(objName, 'setDiagPlan', parms, ["java.lang.String"])

# Query to find the DiagnosticPlan MBean and create the objectName
diagPlanObjName = AdminControl.makeObjectName(diagPlanMBean)

# Run the getDiagPlan method in the Mbean
ret = AdminControl.invoke_jmx(diagPlanObjName, 'getDiagPlan',[],[])

# Display the results on the console
print ret

実行結果

  1. wsadminコマンド でdiagplan.pyを実行し、設定される内容がプロンプトに出力されるので確認
> wsadmin.sh -lang jython -f *****/diagplan.py
WASX7209I: ノード IBM-PF32ZYSFCellManager01 のプロセス "dmgr" に、SOAP コネクターを使用して接続しました。プロセスのタイプは DeploymentManager です。

*MATCH: [
  TRACE: WSVR0605W*
]
JAVACORE
HEAPDUMP
SYSTEMCORE
DELAY: 30
JAVACORE
HEAPDUMP
SYSTEMCORE
DELAY: 30
JAVACORE
HEAPDUMP
SYSTEMCORE

2 ハングスレッド検知時に出力する"WSVR0605W"発生時に、javacore/heapdump/core dumpが出力

[26/02/16 13:39:09:398 JST] 0000009e ThreadMonitor W   WSVR0605W: スレッド "WebContainer : 2" (000000c1) が 602416 ミリ秒間アクティブで、ハングしている可能性があります。  サーバー内には、ハングの可能性のあるスレッドが合計 1 本あります。
	at pdpro.hang.MyLockA.upCountA(MyLockA.java:23)
	at pdpro.hang.MyLockB.upCountBA(MyLockB.java:18)
	at pdpro.hang.MyDeadlockServlet.doLockWork(MyDeadlockServlet.java:67)
	at pdpro.hang.MyDeadlockServlet.doTask(MyDeadlockServlet.java:48)
	at pdpro.hang.MyDeadlockServlet.doGet(MyDeadlockServlet.java:29)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
native_stderr.log
JVMDUMP034I ユーザーは、com.ibm.jvm.Dump.JavaDump を介して Java ダンプ ('/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/javacore.20260216.133909.14628.0001.txt' を使用する) を要求しました。
JVMDUMP010I Java ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/javacore.20260216.133909.14628.0001.txt に書き込まれました
JVMDUMP034I ユーザーは、com.ibm.jvm.Dump.JavaDump を介して Java ダンプ ('/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/javacore.20260216.133911.14628.0002.txt' を使用する) を要求しました。
JVMDUMP010I Java ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/javacore.20260216.133911.14628.0002.txt に書き込まれました
JVMDUMP034I ユーザーは、com.ibm.jvm.Dump.JavaDump を介して Java ダンプ ('/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/javacore.20260216.133911.14628.0003.txt' を使用する) を要求しました。
JVMDUMP010I Java ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/javacore.20260216.133911.14628.0003.txt に書き込まれました
JVMDUMP034I ユーザーは、com.ibm.jvm.Dump.HeapDump を介して Heap ダンプ ('/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/heapdump.20260216.133913.14628.0004.phd' を使用する) を要求しました。
JVMDUMP010I Heap ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/heapdump.20260216.133913.14628.0004.phd に書き込まれました
JVMDUMP034I ユーザーは、com.ibm.jvm.Dump.triggerDump を介して System ダンプ ('/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/core.20260216.133913.14628.0005.dmp' を使用する) を要求しました。
JVMDUMP010I System ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/core.20260216.133913.14628.0005.dmp に書き込まれました
JVMDUMP034I ユーザーは、com.ibm.jvm.Dump.JavaDump を介して Java ダンプ ('/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/javacore.20260216.133947.14628.0006.txt' を使用する) を要求しました。
JVMDUMP010I Java ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/javacore.20260216.133947.14628.0006.txt に書き込まれました
JVMDUMP034I ユーザーは、com.ibm.jvm.Dump.HeapDump を介して Heap ダンプ ('/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/heapdump.20260216.133949.14628.0007.phd' を使用する) を要求しました。
JVMDUMP010I Heap ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/heapdump.20260216.133949.14628.0007.phd に書き込まれました
JVMDUMP034I ユーザーは、com.ibm.jvm.Dump.triggerDump を介して System ダンプ ('/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/core.20260216.133949.14628.0008.dmp' を使用する) を要求しました。
JVMDUMP010I System ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/core.20260216.133949.14628.0008.dmp に書き込まれました
JVMDUMP034I ユーザーは、com.ibm.jvm.Dump.JavaDump を介して Java ダンプ ('/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/javacore.20260216.134021.14628.0009.txt' を使用する) を要求しました。
JVMDUMP010I Java ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/javacore.20260216.134021.14628.0009.txt に書き込まれました
JVMDUMP034I ユーザーは、com.ibm.jvm.Dump.HeapDump を介して Heap ダンプ ('/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/heapdump.20260216.134023.14628.0010.phd' を使用する) を要求しました。
JVMDUMP010I Heap ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/heapdump.20260216.134023.14628.0010.phd に書き込まれました
JVMDUMP034I ユーザーは、com.ibm.jvm.Dump.triggerDump を介して System ダンプ ('/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/core.20260216.134024.14628.0011.dmp' を使用する) を要求しました。
JVMDUMP010I System ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/core.20260216.134024.14628.0011.dmp に書き込まれました

3 diagPlanMbeanの実行結果は、/profiles/(profile_name)/logs/(server_name)/diagPlanSummary.logに出力

-------
オカレンス・イベントの索引時刻
------+---------------------------------+------------------------------------------------------
0      2026-02-16T13:28:50.425+0900      新規診断プラン: "MATCH=TRACE:WSVR0605W*,JAVACORE,HEAPDUMP,SYSTEMCORE,DELAY=30,JAVACORE,HEAPDUMP,SYSTEMCORE,DELAY=30,JAVACORE,HEAPDUMP,SYSTEMCORE"
1      2026-02-16T13:28:50.425+0900      アクションの構文解析
2      2026-02-16T13:28:50.425+0900      次のアクションが追加されました: 
                                      		MATCH: [
                                      		  TRACE: WSVR0605W*
                                      		]
                                      		JAVACORE
                                      		HEAPDUMP
                                      		SYSTEMCORE
                                      		DELAY: 30
                                      		JAVACORE
                                      		HEAPDUMP
                                      		SYSTEMCORE
                                      		DELAY: 30
                                      		JAVACORE
                                      		HEAPDUMP
                                      		SYSTEMCORE
3      2026-02-16T13:28:50.433+0900      MATCH: [
                                      		  TRACE: WSVR0605W*
                                      		] を開始しました。
4      2026-02-16T13:39:09.404+0900      トレース・ストリング WSVR0605W* に一致するトレースが次のメッセージで見つかりました: [26/02/16 13:39:09:398 JST] 0000009e ThreadMonitor W   WSVR0605W: スレッド "WebContainer : 2" (000000c1) が 602416 ミリ秒間アクティブで、ハングしている可能性があります。  サーバー内には、ハングの可能性のあるスレッドが合計 1 本あります。
                                      			at pdpro.hang.MyLockA.upCountA(MyLockA.java:23)
                                      			at pdpro.hang.MyLockB.upCountBA(MyLockB.java:18)
                                      			at pdpro.hang.MyDeadlockServlet.doLockWork(MyDeadlockServlet.java:67)
                                      			at pdpro.hang.MyDeadlockServlet.doTask(MyDeadlockServlet.java:48)
                                      			at pdpro.hang.MyDeadlockServlet.doGet(MyDeadlockServlet.java:29)
                                      			at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
                                      			at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
                                                        .....
5      2026-02-16T13:39:09.405+0900      MATCH: [
                                      		  TRACE: WSVR0605W*
                                      		] が完了しました。
6      2026-02-16T13:39:09.407+0900      JAVACORE を開始しました。
7      2026-02-16T13:39:12.987+0900      JAVACORE が完了しました。 Java コアは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/.\javacore.20260216.133909.14628.0001.txt にあります。
8      2026-02-16T13:39:12.988+0900      HEAPDUMP を開始しました。
9      2026-02-16T13:39:13.846+0900      HEAPDUMP が完了しました。 ヒープ・ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/.\heapdump.20260216.133913.14628.0004.phd にあります。
10     2026-02-16T13:39:13.851+0900      SYSTEMCORE を開始しました。
11     2026-02-16T13:39:17.063+0900      SYSTEMCORE が完了しました。 システム・コアは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/.\core.20260216.133913.14628.0005.dmpにあります。
12     2026-02-16T13:39:17.063+0900      DELAY: 30 を開始しました。
13     2026-02-16T13:39:47.067+0900      DELAY: 30 が完了しました。
14     2026-02-16T13:39:47.072+0900      JAVACORE を開始しました。
15     2026-02-16T13:39:48.866+0900      JAVACORE が完了しました。 Java コアは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/.\javacore.20260216.133947.14628.0006.txt にあります。
16     2026-02-16T13:39:48.867+0900      HEAPDUMP を開始しました。
17     2026-02-16T13:39:49.694+0900      HEAPDUMP が完了しました。 ヒープ・ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/.\heapdump.20260216.133949.14628.0007.phd にあります。
18     2026-02-16T13:39:49.694+0900      SYSTEMCORE を開始しました。
19     2026-02-16T13:39:51.898+0900      SYSTEMCORE が完了しました。 システム・コアは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/.\core.20260216.133949.14628.0008.dmpにあります。
20     2026-02-16T13:39:51.898+0900      DELAY: 30 を開始しました。
21     2026-02-16T13:40:21.904+0900      DELAY: 30 が完了しました。
22     2026-02-16T13:40:21.904+0900      JAVACORE を開始しました。
23     2026-02-16T13:40:23.716+0900      JAVACORE が完了しました。 Java コアは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/.\javacore.20260216.134021.14628.0009.txt にあります。
24     2026-02-16T13:40:23.718+0900      HEAPDUMP を開始しました。
25     2026-02-16T13:40:24.553+0900      HEAPDUMP が完了しました。 ヒープ・ダンプは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/.\heapdump.20260216.134023.14628.0010.phd にあります。
26     2026-02-16T13:40:24.553+0900      SYSTEMCORE を開始しました。
27     2026-02-16T13:40:26.279+0900      SYSTEMCORE が完了しました。 システム・コアは /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/.\core.20260216.134024.14628.0011.dmpにあります。
28     2026-02-16T13:40:26.279+0900      すべての診断プラン・アクションが正常に完了しました。

まとめ

diagnostic plans(診断計画)により、任意のメッセージ ID をトリガーとして、さまざまな Dump ファイルを取得できることを確認しました。

また、Dump ファイルだけでなく、メッセージ ID をトリガーにトレース設定を有効化することも可能です。
設定方法などの詳細は、以下の参考情報にご参照をお願いいたします。

参考情報

診断計画を使用したトラブルシューティング・データの収集
https://www.ibm.com/docs/ja/was/9.0.5?topic=tools-collecting-troubleshooting-data-diagnostic-plans

診断計画を使用したトラブルシューティング・データの収集
https://www.ibm.com/docs/ja/was/8.5.5?topic=troubleshooting-collecting-data-diagnostic-plans
※ WAS v8.5は、v8.5.5.15 以降で diagnostic plans(診断計画)を使用できます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?