2. プロファイラツール

2.1. 注意制限事項

2.2. WebOTXプロファイラ

WebOTXプロファイラ はJVMのプロファイル情報(ヒープ、CPU)を取得し、表示させるためのツールです。

以下の機能を提供しています。

表2.2-1
機能 説明
CPUプロファイラ CPUの関連情報を表示します。
  • インボケーションツリー
    メソッド呼出関係によって生成されたツリー構造を表示します。

  • ホットスポット
    各メソッドが使用しているCPUの割合を表示します。

  • メソッドグラフ
    ある時刻において、あるメソッドとそのメソッドが呼出すメソッドとの関係を表示します。
Heapプロファイラ ヒープの関連情報を表示します。
  • クラスモニタ
    各クラスのインスタンス数と、これらのインスタンスが使用しているメモリサイズを表示します。各メソッド中の配分情況を取得することができます。

  • アロケーションホットスポット
    メソッドのメモリ配分情報を表示します。

WebOTXプロファイラは、JavaVMからJVMPIを通して性能データを取得するプロファイラライブラリと性能データを収集するプロファイラサーバーと、プロファイルデータを表示するプロファイラクライアントで構成します。

プロファイラサーバーは、性能監視対象のJVMと同一マシン上で動作し、プロファリラクライアントは監視端末(ローカルマシンでも、リモートマシンでも可)で動作します。


図2.2-1



2.3. WebOTXプロファイラの操作

WebOTXプロファイラの属性値の設定及び起動・終了等の操作方法について説明します。

2.3.1. 属性値の設定

2.3.1.1. サーバーの属性情報の表示や設定

profiler_server.propertiesで設定する属性値を、下表で説明します。

表2.3.1.1-1
属性値 説明 デフォルト値
Info プロファイラライブラリがINFOレベルのメッセージをログに書き込みを行います。0か1以外の値の場合、0が設定されます。
0:ログに書き込みを行いません
1:ログに書き込みを行います
1
Warning プロファイラライブラリがWARNINGレベルのメッセージをログに書き込みを行います。0か1以外の値の場合、0が設定されます。
0:ログに書き込みを行いません
1:ログに書き込みを行います
0
Error プロファイラライブラリがERRORレベルのメッセージをログに書き込みを行います。0か1以外の値の場合、0が設定されます。
0:ログに書き込みを行いません
1:ログに書き込みを行います
1
LogSize ログのサイズです。設定した値を超えた場合、既存の内容をクリアしてから、ログの出力を行います。 1MB
Depth モニタの最大深度です。
Depthの値について最大深度が32と設定します。32より大きい値を設定した場合は、全て32に設定されます。
Depthの値が0以下の場合、デフォルトの値4を使用します。
注: Depthの値が8を超えた場合、クライアントのハードウェア構成について、メモリ、HeapSizeは1GB以上必要となります。また、CPUは2.0GHz以上を推奨します。
Depthを既定値より大きくした場合、データ量が多くなり、クライアントプログラムの応答が悪くなる場合があります。特にCPUリソースの少ないマシンで実行する場合は注意ください。
4
Include モニタしようとするパッケージ名またはクラス名です。複数指定する場合、";"で区切って、デフォルトで全てのパッケージをモニタします。
例えば、Include=com.nec.webotx.ejb.containersはパッケージcom.nec.webotx.ejb.containers以下の内容だけ取得することを表示します。
Exclude モニタを行わないパッケージです。 java.;javax.;sun.;org.;
com.nec.webotx.;
com.nec.wojdbc.;
jp.co.nec.orb.;
jp.co.nec.WebOTX.;
jp.co.nec.WebOTX_S.;
jp.co.nec.wojdbc.

2.3.1.2. クライアントの属性情報の表示や設定

profiler_client.propertiesで設定する属性値を、下表で説明します。

表2.3.1.2-1
属性値 説明 デフォルト値
LogSize ログのサイズです。設定した値を超えた場合、既存の内容をクリアしてから、ログの出力を行います。 1MB
ClientSocketPort クライアント側でSocket Serverを起動する時のポート番号です。 8500
SelfTotalTimeLimit 「CPUプロファイラ:インボケーションツリー」画面で、内容の濾過項目を表示します。
シングルノードのSelfTotalTime値≤SelfTotalTimeLimitの場合は表示しません。

0

DefaultStart 最初から監視するかを決定します。
  • 1の場合、WebOTXを起動する時から監視が開始されます。
  • 0の場合、「WebOTXプロファイラ」の「Start Profiling」アイコンを押した後、監視を開始します。
  • 1または、0でない場合、DefaultStartの値は0が設定されます。

0

ExportFilePath 「WebOTXプロファイラ」の「export」アイコンを押した後保存するファイルのパスです。
デフォルト値は${AS_INSTALL}/logsとなります。
${AS_INSTALL}/logs

 

2.3.2. WebOTXプロファイラの起動と終了

2.3.2.1. Webアプリケーション(プロセスグループで動作させない場合)、EJB(Express)で利用する場合

Webアプリケーション(プロセスグループで動作させない場合)、EJB(Express)でのプロファイラの利用方法について説明します。

以下の例に関しましては、適宜domain名等の環境は読み替えてください。

起動手順:

1、サーバー側:

otxadmin> start-domain domain1

2、サーバー側:

otxadmin>login --user admin --password xxxxxxx

3、サーバー側:

otxadmin> create-jvm-options "-Xrunwoprofiler\:path=${AS_INSTASLL},ip=127.0.0.1\:8500,defaultstart=0"

pathにはWebOTXインストールディレクトリを指定してください。pathを指定しない場合は、WebOTXインストールディレクトリが自動的に設定されます。

4、サーバー側:

otxadmin> stop-domain domain1

5、クライアント側:

${AS_INSTALL}/bin/woprofiler_client.bat

6、サーバー側:

otxadmin> start-domain domain1

7、profiler_client.propertiesのdefaultstartの値が0の場合、クライアント側「WebOTXプロファイラ」画面上の「Start Profiling」をクリックするとプロファイラが開始します。

終了手順:

1、サーバー側:

otxadmin> login --user admin -password xxxxxx

2、サーバー側:

otxadmin> delete-jvm-options "-Xrunwoprofiler\:path=${AS_INSTASLL},ip=127.0.0.1\:8500,defaultstart=0"

3、サーバー側:

otxadmin> stop-domain domain1

2.3.2.2. Standard/Enterpriseでプロセスグループに配備したアプリケーションで利用する場合

Standard/Enterprise において、プロセスグループに登録したWebアプリケーション、EJB、CORBAアプリケーションのプロファイル方法について説明します。

以下の例に関しましては、適宜domain名等の環境は読み替えてください。

 

起動手順:

1、サーバー側:

otxadmin> start-domain domain1

2、サーバー側:

otxadmin> login --user admin --password xxxxxx

3、サーバー側:

otxadmin> set tpsystem.applicationGroups.<apgname>.processGroups.<pgname>.otherArguments="-Xrunwoprofiler:path=${AS_INSTALL},ip=127.0.0.1:8500,defaultstart=0

例:

otxadmin> set tpsystem.applicationGroups.apg.processGroups.pg.otherArguments = "-Xrunwoprofiler:path=C:\\WebOTX,ip=127.0.0.1:8500,defaultstart=0”

-Xrunprofilerオプションを設定する際の注意事項は3.2.1節を参照してください。

注意:コマンドは一行で実行してください。

4、サーバー側:

UNIX環境で実行する場合以下のコマンドを実行して、プロセスグループの環境変数にLD_LIBRARY_PATH(HP-UX(PA)ではSHLIB_PATH)に/opt/WebOTX/libを追加してください。

otxadmin> set tpsystem.applicationGroups.<apgname>.processGroups.<pgname>.setenvList={{LD_LIBRARY_PATH,$LD_LIBRARY_PATH:/opt/WebOTX/lib}}

5、サーバー側:

プロセスグループの環境変数にAS_INSTALLとしてWebOTXインストールディレクトリを指定してください。

otxadmin> set tpsystem.applicationGroups.<apgname>.processGroups.<pgname>.setenvList={{AS_INSTALL,${AS_INSTALL}}}

6、サーバー側:

otxadmin> stop-pg --apgroup <apgname> <pgname>

7、クライアント側:

${AS_INSTALL}/bin/woprofiler_client.bat

8、サーバー側:

otxadmin> start-pg --apgroup <apgname> <pgname>

9、profiler_client.propertiesのDefaultStartの値が0の場合、クライアント側「WebOTXプロファイラ」画面上の「Start Profiling」をクリックするとプロファイラが開始します。

 

終了手順:

1、サーバー側:

otxadmin> login --user admin -password xxxxxx

2、サーバー側:

otxadmin> stop-pg <apgname> <pgname>

2.3.2.3. logの確認

プロファイラライブラリのログレコードは${AS_INSTALL}/logs/webotx_profiler_dll.logファイルに出力されます。

クライアント側のログは${AS_INSTALL}/logs/webotx_profiler_client.log中に記録されています。

 

2.4. クライアント側の使用

2.4.1. プロファイラクライアント側の使用方法

プロファイラクライアント側の使用方法について説明します。

${AS_INSTALL}/bin/webotx_profiler_client.batを実行します。

profiler_client.properties中のDefaultStart値が1でない場合、「WebOTXプロファイラ」画面を開いて、次の通りです。


図2.4.1-1



 

(「Start Domain」アイコンを押して)ドメインを起動し、且つ「Start Profiling」アイコンを押すと(起動する前にprofiler_client.properties中のDefaultStart値を1と設定した場合、「Start Profiling」アイコンを押す必要がありません)、次の画面が表示されます。

 

 

 


図2.4.1-2



「WebOTXプロファイラ」画面上のアイコンについて説明しています。

表2.4.1-1
アイコン 説明

Start Profiling:監視を開始します。マウスをアイコン上に持っていったときに文字[Start Profiling]を表示します。

Stop Profiling:監視を終了します。マウスをアイコン上に持っていったときに文字[Stop Profiling]を表示します。

Export:監視情報をファイルに出力します。マウスをアイコン上に持っていったときに文字[export]を表示します。

検索:カレントの画面で検索します。マウスをアイコン上に持っていったときに文字[search]を表示します。

 

2.4.2. JVM情報の動的な表示

JVM情報は5つの項目があります。CPUと関連する「インボケーションツリー」、「ホットスポット」、「メソッドグラフ」、ヒープと関連する「クラスモニタ」、「アロケーションホットスポット」の項目があります。

表2.4.2-1
Tab頁名 説明
「インボケーションツリー」 メソッド呼出関係のツリーを表示します。同じスレッドのメソッドよって、一つのツリー構造を作成し、各ノードの情報は動的に変化します。ノードで表示する内容の具体的な情報については、図2.4.2.1-1の内容説明を参照してください。
「ホットスポット」 検出したメソッドのCPU使用時間と、メソッドごとに呼出された回数が表示されます。時間の単位がミリ秒[ms]で、メソッドの情報も動的に変化します。表示する具体的な内容については、図2.4.2.2-1の内容説明を参照してください。
「メソッドグラフ」 「インボケーションツリー」で選択したメソッド、及びその下の階層のメソッドの呼出関係を表示します。この項目の内容は動的に変化するのではなく、「インボケーションツリー」のノードを選択した時刻の情報だけ表示します。表示する具体的な内容については、図2.4.2.3-1の内容説明を参照してください。
「クラスモニタ」 クラスのヒープの使用領域、及びインスタンス数の情報を表示します。これらの情報も動的に変化します。表示する具体的な内容については、図2.4.2.4-1の内容説明を参照してください。
「アロケーションホットスポット」 メソッドのヒープの使用領域情報を表示します。これらの情報も動的に変化します。ヒープの使用領域が0の場合、メソッドを表示しません。表示する具体的な内容については、図2.4.2.5-1の内容説明を参照してください。

2.4.2.1. 「インボケーションツリー」

この項目では、スレッドとメソッド呼出関係による作成したツリー構造を表示します。同じスレッドのメソッドより一つのツリー構造を作成します。ノードの上下級関係は、メソッドの呼出関係です。

メソッド呼出関係のツリー構造図は、図2.4.2.1-1のようになります。


図2.4.2.1-1

ノードの内容説明:

図2.4.2.1-1(1)このノードメソッドのSelfTotalTime (SelfTotalTime:メソッド自身の動作時間 + このメソッドが呼出したメソッドの動作時間)の総実行時間(TotalTime)に占める割合をパーセンテージで表示します。

図2.4.2.1-1(2)メソッドのSelfTotalTimeを表示します。

図2.4.2.1-1(3)メソッドの呼出された回数を表示します。

図2.4.2.1-1(5)メソッド名を表示します。

 

右キーの説明:

選択したノードに右クリックすると、図2.4.2.1-1(4)のメニューが表示されます。このメニューの内容を選択すると、画面は自動的に 「メソッドグラフ」に遷移されます。

2.4.2.2. 「ホットスポット」

この項目ではメソッドのCPU使用量が表示されます。

表示情報の内容は図2.4.2.2-1のように表示されます


図2.4.2.2-1



 

内容説明:

1、    図2.4.2.2-1(1)メソッド名を表示します。

2、    図2.4.2.2-1(2)棒グラフはこのメソッド自身の動作時間が総時間に占める割合を意味しています。

3、    図2.4.2.2-1(3)このメソッド自身の動作時間が総実行時間に占める割合をパーセンテージで表示します。

4、    図2.4.2.2-1(4)このメソッドのSelfTimeを表示します。(SelfTime: メソッド自身の動作時間。当該メソッドより呼出す他のメソッドの時間を含まない)

5、    図2.4.2.2-1(5)メソッドが呼出された回数を表示します。

 

2.4.2.3. 「メソッドグラフ」

この項目で「インボケーションツリー」中のツリーノードのメソッド、及びその下の階層の呼出関係が表示されます。選択したツリーノードで右クリックすると、この項目に遷移します。

表示情報の内容は図2.4.2.3-1のようになります。


図2.4.2.3-1



内容説明:

赤い背景でホットスポットが表示されます。つまり、メソッドの動作時間(SelfTime)が一番長いことを意味しています。

1、    図2.4.2.3-1(1)メソッド名を表示します。

2、    図2.4.2.3-1(2)このメソッドが動作する総時間を表示します。当該メソッドから呼出すメソッドの動作時間を含みます。(SelfTotalTime)

3、    図2.4.2.3-1(3)このメソッド自身の動作時間(SelfTime)を表示します。

4、    図2.4.2.3-1(4)このメソッドが呼出された回数を表示します。

5、    図2.4.2.3-1(5)このメソッドの呼出関係と表示します。呼出メソッドから呼出されるメソッドに向けて矢印が表示されます。

 

2.4.2.4. 「クラスモニタ」

この項目ではヒープ中のクラス情報が表示されます。

この項目の表示内容は図2.4.2.4-1のように表示されます。

 


図2.4.2.4-1



内容説明:

1、    図2.4.2.4-1(1)クラス名を表示します。

2、    図2.4.2.4-1(2)ドメイン値を表示します。全てのクラスが利用するヒープ領域のサイズの境界値です。この値を超えると、ウォーニングアイコンとウォーニングメッセージが表示されます。図2.4.2.4-1(3)、(8)の通りです。

ドメイン値は編集可能です。入力範囲は0 - 2047の整数です。小数を入力した場合、自動的に四捨五入を行います。負数と不正な数を入力した場合、自動的に0になります。2047を超えた整数の場合、自動的に2047になります。ドメイン値には256、512、1024の3つのデフォルト値があります。

3、    図2.4.2.4-1(3)ドメイン値がクラスの総ヒープサイズより小さい場合、ウォーニングアイコンが表示されます。

4、    図2.4.2.4-1(4)右クリック機能です。

5、    図2.4.2.4-1(5)現在のヒープ中のクラスの領域使用量を表示します。この値も動的に変化します。

6、    図2.4.2.4-1(6)棒グラフはこのクラスのインスタンス数が、総インスタンス数のうち、占める割合を意味しています。

7、    図2.4.2.4-1(7)のクラスのインスタンス数を表示します。

8、    図2.4.2.4-1(8)ドメイン値が全てのクラスのヒープの領域使用量よりい小さい場合、ウォーニングメッセージを表示します。

9、    図2.4.2.4-1(9)クラスの全てのインスタンスが使用するヒープのサイズを表示します。

 

右キーの説明:

テーブル中の一行のデータを選択し、右クリックすると、図2.4.2.4-1(4)の内容が表示されます。表示された内容を選択し、次のようなダイアログが表示されます。このダイアログで、オブジェクトが各メソッド中の配分情況を表示します。


図2.4.2.4-2


内容説明:

1、    図2.4.2.4-2(1)メソッド名を表示します。

2、    図2.4.2.4-2(2)インスタンスの個数を表示します。

3、    図2.4.2.4-2(3)インスタンスのサイズを表示します。

2.4.2.5. 「アロケーションホットスポット」

この項目でヒープ中のメソッド情報を表示します。

この頁の表示内容は図2.4.2.5-1のようになります。


図2.4.2.5-1



内容説明:

1、    図2.4.2.5-1(1)メソッド名を表示します。

2、    図2.4.2.5-1(2)ドメイン値を表示します。全てのクラスが利用するヒープ領域のサイズの境界値です。この値を超えると、ウォーニングアイコンとウォーニングメッセージが表示されます。図2.4.2.5-1(3)、(7)の通りです。

ドメイン値は編集可能です。入力範囲は0〜2047の整数です。小数を入力した場合、自動的に四捨五入を行い、負数と不正な数を入力した場合、自動的に0になります、2047を超えた整数の場合、自動的に2047になります。ドメイン値には256、512、1024の三つのデフォルト値があります。

3、    図2.4.2.5-1(3)ドメイン値がクラスの総ヒープサイズより小さい場合、ウォーニングアイコンが表示されます。

4、    図2.4.2.5-1(4)現在のヒープ中のクラスの領域使用量を表示します。この値も動的に変化します。

5、    図2.4.2.5-1(5)棒グラフはこのクラスのインスタンス数が、総インスタンス数のうち、占める割合を意味しています。

6、    図2.4.2.5-1(6)このメソッドのヒープ領域が、全てのメソッドのヒープ領域に占める割合をパーセンテージで表示します。

7、    図2.4.2.5-1(7)ドメイン値が、メソッドの総ヒープサイズより小さい場合、ウォーニングメッセージが表示されます。

8、    図2.4.2.5-1(8)このメソッドのヒープ領域を表示します。

 

2.4.3. 区間監視

「WebOTXプロファイラ」画面上の「Start Profiling」と「Stop Profiling」を通して区間監視機能を実装します。

「Start Profiling」アイコンをクリックし、プロファイラが開始し、アイコンが「Stop Profiling」になります。

「Stop Profiling」アイコンをクリックし、プロファイラを終了し、アイコンが「Start Profiling」になります。

 

2.4.4. ファイルにエクスポートする

「WebOTXプロファイラ」画面上の 「export」をクリックすると、監視情報をファイルにエクスポートすることができます。

エクスポートに成功したメッセージの提示ボックスは次のようです。

 


図2.4.4-1



内容説明:

1、    図2.4.4-1(1)エクスポートされたファイルのパスです。ファイルprofiler_client.properties中のExportFilePath値です。

2、    図2.4.4-1(2)エクスポートされたファイルの名前です

 

webotx_profiler.txtファイルが読取専用の場合、ファイルのエクスポートに失敗します。提示メッセージボックスは次のようです。

 


図2.4.4-2



ExportFilePathが無効や存在しないパスの場合、ファイルのエクスポートに失敗します。提示メッセージボックスは次のようです。

 


図2.4.4-3



エクスポートされたファイルの内容:

1.ファイルのヘッダーにバージョン情報、ファイル作成日付、版権宣言等の情報を含みます。

例:


図2.4.4-4

2.ファイルの内容に四つの部分が含まれています。

(1)CPU使用情況のメソッドツールです。トレースでメソッド間の呼出関係及びCPU使用時間のパーセンテージを表示します。

例:


図2.4.4-5

TRACE 2中のメソッドcom.nec.webotx.enterprise.server.WebOTXMain.<clinit>のCPU占用パーセンテージは35.13%で、CPU使用時間(他のメソッドを呼出す時間を含む)は6218.75ms、1回呼出されてまいす。呼出関係は、com.nec.webotx.enterprise.server.WebOTXMain.<clinit>はcom.nec.webotx.enterprise.server.WebOTXMain.class$を呼出します。

(2)CPU使用ホットスポットです。CPUの使用率が高い順にソートしています。

例:


図2.4.4-6



メソッドcom.nec.webotx.logging.LogDomains.setLoggerのCPU利用量が最も多く、2回呼出されてまいす。CPU利用率36.54%です。

(3)Heapはクラス中の配分情況です。対応するクラス名がない場合は対象の具体的なタイプ名を表示します。trace番号によって、あるタイプのheapは具体的なメソッド中にある配分情況を関連できます。

例:


図2.4.4-7



Char[ ] 配列はTRACE154で3269KBのheapを消耗し、インスタンス個数は69254です。TRACE 154はCPU Information-Invocation Tree中のTRACE 154です。

(4)heapはメソッド中の配分情況です。ヒープのサイズが大きい順にソートしています。

例:


図2.4.4-8



メソッドcom.nec.webotx.enterprise.admin.server.core.AdminServiceLifeCycle.onInitializationのheap占用量が最も多く、サイズは8417K、heap総数の68.65%を占めます。

 

2.4.5. 検索

WebOTX Profiler画面の「検索」ボタンを押すと、「検索」ダイアログが出されます。ダイアログ表示中は、画面の更新は停止されます。


図2.4.5-1



画面の内容説明:

表2.4.5-1

項目

説明

「検索する文字列」

検索する内容

「次の検索」

上へ/下へ指定した文字列を検索

「キャンセル」

検索を取り消し、検索ダイアログを終了

「単語単位で検索する」

入力した内容と完全に一致する文字列を検索

「大文字と小文字を区別する」

大文字と小文字を区別して検索を行う

「上へ」

上へ検索

「下へ」

下へ検索

このダイアログが表示された時、画面の更新は停止されます。「検索する文字列」テキストボックスに検索する文字列を入力し、「次の検索」ボタンまたはスペースキーを押すと、クラス名またはメソッド名に検索内容を含むノードあるいはラインに移動します。「検索」ダイアログを閉じると、画面の更新は再度開始します。

同時に「大文字と小文字を区別する」チェックボックスをチェックすると、大文字と小文字を区別して検索します。

「単語単位で検索する」をチェックして検索すると、全体のクラス名またはメソッド名が完全にマッチするノード、あるいはラインを大文字と小文字を区別して検出します。

2.4.5.1. ツリーの検索

「インボケーションツリー」画面で検索ボタンを押し、検索ダイアログが出された後、ツリーの更新は停止されます。検索を実行する時、検出した内容の全ての親ノードを展開し、検出した内容を選択します。

下図は「インボケーションツリー」の検索です。


図2.4.5.1-1



2.4.5.2. テーブルの検索

テーブルに対して検索する時、検索ダイアログが出された後、テーブルの更新は停止されます。

下図はテーブルの検索です。


図2.4.5.2-1



2.4.5.3. 検索終了

検出した内容のトラバースが完了した後、検索終了のダイアログが出されます。


図2.4.5.3-1



 

2.4.6. WebOTXプロファイラ利用例

2.4.6.1. 特定のオペレーション時のみプロファイルを行う場合

アプリケーションある特定のオペレーションの間のみプロファイルを行う場合について説明します。

1、    3.2.1節または、3.2.2節を参照し、WebOTXプロファイラを利用するための設定を行います。

ただし、defaultstartは0に設定してください。

2、    woprofiler_client.bat(UNIXではwoprofiler_client)を実行し、プロファイラクライアントを起動します。

3、    ドメインを起動し、プロファイラクライアントに接続します。

4、    アプリケーションをある程度動作させ、必ず生成されるようなオブジェクトが生成されるようします。

5、    profiler_client.propertiesのDefaultStartが1でプロファイラクライアントを起動した場合、Stop Profilingボタンをおします。(採取したデータが0クリアされます)

6、    プロファイラクライアントのStart Profilingボタンをおし、プロファイルを開始してください。

7、    アプリケーションを動作させ、特定のオペレーションを行います。

 

上記の操作で採取されたデータは、アプリケーションの特定のオペレーション実行中に確保されたデータのみになります。