Cosminexus システム運用ガイド
ここでは,JavaVMのスレッドダンプを取得する方法について説明します。
JavaVMのスレッドダンプは,次の方法で取得できます。
それぞれの方法について次に説明します。
運用管理コマンド(mngsvrutil)を利用したJavaVMのスレッドダンプの取得は,mngsvrutilコマンドのサブコマンド「dump」の引数にserverを指定して実行します。
次のスレッドダンプを取得できます。
mngsvrutilコマンドおよびそのサブコマンドの詳細については,マニュアル「Cosminexus リファレンス コマンド編」を参照してください。
実行形式,実行例,および出力先を次に示します。
mngsvrutil -m <Management Serverのホスト名> -u <管理ユーザID> -p <管理パスワード> -t <論理サーバ名> dump server |
mngsvrutil -m mnghost -u user01 -p pw1 -t myserver dump server
スレッドダンプの出力のされ方は,指定しているJ2EEサーバを実行するJavaVMの起動オプションによって異なります。
J2EEサーバプロセス(cjstartsv)が存在する場合,J2EEサーバのスレッドダンプは,cjdumpsvコマンドを実行して取得します。cjdumpsvコマンドの実行例を次に示します。時間の経過に応じた各スレッドの状態遷移を確認するため,複数回cjdumpsvコマンドを実行します。目安として3秒おきに10回程度実行します。
<Cosminexusのインストールディレクトリ>\CC\server\bin\cjdumpsv <J2EEサーバ名> |
/opt/Cosminexus/CC/server/bin/cjdumpsv <J2EEサーバ名> |
cjdumpsvコマンドを実行すると,次に示すファイルにJavaVMのスレッドダンプが出力されます。
サーバ標準出力ログのデフォルトの出力先は「<ejb.server.log.directory>\CC\maintenance\cjstdout.log」(Windowsの場合),または「<ejb.server.log.directory>/CC/maintenance/cjstdout.log」(UNIXの場合)です。出力先を変更している場合は,「5.4.1 Cosminexusのログの取得(J2EEアプリケーションを実行するシステム)」または「5.4.2 Cosminexusのログの取得(バッチアプリケーションを実行するシステム)」を参照してください。なお,作業ディレクトリのデフォルトのディレクトリパスは「<Cosminexusのインストールディレクトリ>\CC\server\public」(Windowsの場合),または「/opt/Cosminexus/CC/server/public」(UNIXの場合)です。
また,javacore<プロセス番号>.<コマンド実行日時>.txtファイルの出力先は,環境変数JAVACOREDIRで変更できます。ただし,指定したディレクトリへの書き込みに失敗した場合は,デフォルトの出力先に出力されます。このディレクトリにも出力できなかった場合は,標準エラー出力にだけ出力されます。
cjdumpsvコマンドの詳細については,マニュアル「Cosminexus リファレンス コマンド編」を参照してください。
Writing Java core to <ファイル名(フルパス)>...OK |
Windowsの場合,CORBAネーミングサービスのプロセス(nameserv)が存在するときは,CORBAネーミングサービスを起動したコマンドプロンプトに対してCtrl+Breakキーを押します。時間の経過に応じた各スレッドの状態遷移を確認するため,複数回実行します。目安として3秒おきに10回程度実行します。なお,CORBAネーミングサービスをManagement Serverから監視している場合はスレッドダンプを取得できません。
UNIXの場合,CORBAネーミングサービスのプロセス(java)が存在するときは,killコマンドを実行してCORBAネーミングサービスのスレッドダンプを取得します。なお,CORBAネーミングサービスをManagement Serverから監視している場合はスレッドダンプを取得できません。
UNIXでのCORBAネーミングサービスのスレッドダンプの取得手順を次に示します。
ps -ef | grep java |
#!/bin/sh export VBROKER_ADM=/opt/Cosminexus/TPB/adm export SHLIB_PATH="${SHLIB_PATH}:/opt/Cosminexus/TPB/lib" # start name server process exec /opt/Cosminexus/TPB/bin/nameserv \ -J-Dvbroker.agent.enableLocator=false \ -J-Djava.security.policy==/opt/Cosminexus/CC/server/sysconf/cli.policy \ -J-Dvbroker.se.iiop_tp.scm.iiop_tp.listener.port=900 & # save background java process pid echo $! > ./namesv_pid |
kill -3 `cat namesv_pid` |
EJBクライアントアプリケーションのスレッドダンプは,cjcldumpapコマンドを実行して取得します。
cjcldumpapコマンドを実行すると,cjclstartapコマンドを実行して起動したEJBクライアントアプリケーションのスレッドダンプが出力されます。また,特定のプロセスのスレッドダンプを出力することもできます。cjcldumpapコマンドの詳細については,マニュアル「Cosminexus リファレンス コマンド編」を参照してください。
cjcldumpapコマンドの実行形式,実行例,およびスレッドダンプの出力先を次に示します。
cjcldumpap |
cjcldumpap <プロセスID> |
cjcldumpap
cjcldumpap 3264
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.