JRockit SDK ユーザーズ ガイド
JRockit Management Console を使用すると、BEA JRockit JVM の動作中のインスタンスをモニタおよび制御できます。JRockit Management Console は、動作中のアプリケーションの特性に関するリアルタイムの情報を提供します。この情報を開発時に使用して、アプリケーションのライフ サイクルの中でメモリを多く消費している箇所を見極めたり、デプロイ済みの環境で使用して、動作中のアプリケーション サーバのシステム状態をモニタしたりできます。
JRockit Management Console の実行にかかる追加のコストは、動作中の BEA JRockit JVM に対して非常に小さいため、ほとんど無視することができます。このため、非常に小さいコストでアプリケーションのモニタとプロファイリングが行えます。
注意 : モニタ対象の VM と同じマシン上で Management Console を実行することはお勧めしません。モニタ対象の BEA JRockit と同じマシン上で Console を実行すると、Management Console GUI は JVM 上で動作するアプリケーションから貴重なリソースを奪うことになり、その結果パフォーマンスが低下するおそれがあります。
Management Console は次の 2 つの手順で起動します。
また、起動プロセスの一部として次のタスクを完了することもできます。
Management Console を BEA JRockit JVM に接続する前に、VM 内の管理サーバを起動する必要があります。サーバはデフォルトでは無効になっています。管理サーバを有効にするには、-Xmanagement
オプションを指定して BEA JRockit JVM を起動します。
-Xmanagement
次のように、-Xmanagement
と class= および classpath=
パラメータを使用して、管理クラスとそのクラスパスを指定できます。
-Xmanagement:class=<classname>,classpath=<path>
このオプションを指定するとクラスがロードされ、JVM 起動時の早い段階でそのクラスの空のコンストラクタが呼び出されます。このコンストラクタから、新しいスレッドが起動され、そのスレッドで管理クライアントが実行されます。この呼び出しは BEA JRockit の起動時の早い段階で行われるため、コンストラクタから制御をすぐに戻すようにしてください。
コマンド プロンプトから次のように入力して JRockit Management Console を起動します。
console
注意 : Management Console を起動する前に、.jar
ファイルの JRE パスとクラスパスを指定する必要があります。
ランチャを使用しないで Management Console を起動することもできます。コマンドラインで、次のように入力します。
java -jar<jrockit-install-directory>
/console/ManagementConsole.jar
セキュリティ マネージャを実行している状態で (-Djava.security.manager
オプション) 管理サーバを起動 (-Xmanagement
オプション) しようとすると、管理サーバが起動せず、次のようなエラー メッセージが出されます。
"ERROR: failed to initialize class com.jrockit.management.rmp.
RmpSocketListener."
セキュリティ マネージャの下で管理サーバを実行するには、コード リスト 4-1 に示すテキストをポリシー ファイルに追加します。ポリシー ファイルの標準の場所は以下のとおりです。
ポリシー ファイルの詳細については、以下を参照してください。
http://java.sun.com/products/jdk/1.2/docs/guide/security/PolicyFiles.html
コード リスト 4-1 セキュリティ マネージャで管理サーバを起動するためのコード
/* --- JRockit 管理サーバのパーミッション --- */
/* TODO 1: JAVA_HOME/jre/lib でインストール済みの managementserver.jar を見つける */
grant codeBase "file:C:/MY_JAVA_HOME/jre/lib/managementserver.jar" {
/* TODO 2: コンソール クライアントに対して接続のパーミッションを追加する*/
permission java.net.SocketPermission "my-console-client.com", "accept,
resolve";
/* TODO 3: 管理サーバに対して接続をリスンするパーミッションを
追加する*/
permission java.net.SocketPermission "localhost:7090", "listen,
resolve";
/* 管理サーバの標準の処理に対するパーミッションを追加する*/
permission com.bea.jvm.ManagementPermission "createInstance";
permission java.lang.RuntimePermission "modifyThreadGroup";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "shutdownHooks";
permission java.util.PropertyPermission "*", "read, write";
};
-Xmanagement
オプションを設定して (かつ VM が「quiet」モードで動作していない場合に) BEA JRockit JVM を起動すると、コマンドラインに続いて、管理サーバが実行中であることと使用しているポートを示す短いメッセージが出力されます。コマンドライン引数として port プロパティにポート番号を設定して、使用するポートを選択することもできます。
java -Djrockit.managementserver.port=<portnumber>
管理サーバが接続に使用するデフォルトのポートは 7090 です。このポートはファイアウォールでブロックすることをお勧めします。ブロックしないと、権限のないユーザが管理サーバにアクセスする可能性があります。
maxconnect プロパティを設定して、サーバに許可される接続の数を変更できます。
-Djrockit.managementserver.maxconnect=<maximum number of connections>
デフォルトの制限は 4 つの同時接続です。ほとんどのユーザはこれで十分ですが、必要に応じて変更できます。接続の制限によって、侵入者によるサービス拒否 (DoS) 攻撃を防御します。
図 4-1 に示すような JRockit Management Console ウィンドウが表示されると、コンソールが起動されたことになります。
図 4-1 BEA JRockit JVM Management Console
JRockit Management Console のウィンドウは 2 つのペインに分かれています。左ペインが接続ブラウザ ツリー (図 4-2) で、右ペインがタブ インタフェース ペイン (図 4-3) です。
最初のタブには、選択した BEA JRockit JVM 接続 (接続ブラウザ ペインで強調表示される) に関する情報の概要が表示されます。他のタブには、VM のさまざまな領域に関する詳細情報が含まれています。「情報タブ」を参照してください。
図 4-3 に、コンソールの管理者操作モードで利用できる情報タブを示します。コンソールが開発者モードの場合は、図 4-4 のように追加のタブが表示されます。これらの 2 つの操作モードについては「操作モードの設定」で説明します。
コンソールには、一部のメニュー オプションに対応するコマンド ボタンを含むツールバーがあります (図 4-5)。ツールバーのオンとオフを切り替えるには、[View] メニューで [Tool Bar] を選択します。
図 4-5 Management Console ツールバー
ウィンドウの下部にあるステータス バー (図 4-6) には、ツールバー ボタンをポイントするかメニュー項目を選択したときに、情報メッセージとヒントが表示されます。JRockit Management Console が 1 つまたは複数の BEA JRockit JVM 実装に接続しているかどうかも示されます。ステータス バーのオンとオフを切り替えるには、[View] メニューで [Status Bar] を選択します。
コンソールを実行したら、ニーズに合わせてコンフィグレーションする必要があります。コンソールのコンフィグレーションまたは設定には以下のタスクがあります。
接続ブラウザには BEA JRockit JVM への保存された接続がフォルダに整理されて表示されます。必要に応じて、ツリー構造に独自のフォルダや接続ノードを追加できます。動作中の VM に現在接続しているアクティブな接続は緑色のアイコンで示されます。切断された接続は赤いアイコンで示されます。
接続ブラウザに独自のフォルダを作成するには、次の手順に従います。
〔Ctrl〕+〔N〕
を押す。 [Add new folder] ダイアログ ボックス (図 4-7) が表示されます。
図 4-7 [Add new folder] ダイアログ ボックス
接続ブラウザで BEA JRockit JVM への新しい接続を作成するには、次の手順に従います。
[Add new connection] ダイアログ ボックス (図 4-8) が表示されます。
図 4-8 [Add new connection] ダイアログ ボックス
BEA JRockit に接続するには、次の手順に従います。
BEA JRockit JVM から接続を切断するには、次の手順に従います。
接続または接続のフォルダの名前を変更するには、次の手順に従います。
〔F2〕
を押す。[Folder properties] ダイアログ ボックス (図 4-9) が表示されます。
図 4-9 [Folder properties] ダイアログ ボックス
注意 : 最後のオプション (項目ラベルをクリック) を選択した場合、[Folder properties] ダイアログ ボックスは表示されません。代わりに、ラベル自体が直接編集できる状態になります。古い名前の上に新しい名前を入力してから、ラベル以外の場所をクリックするか〔Enter〕を押します。
アクティブな BEA JRockit JVM 接続に関する情報だけを表示することができます。切断された接続の情報を非表示にするには、次のいずれかを実行します。
切断された接続の情報を再び表示するには、選択したときと同じように [Hide Disconnected] を選択解除するだけです。
この節では、JRockit Management Console のさまざまな設定を有効にする方法について説明します。
Management Console は 2 つの異なる操作モードで実行できます。
[Preferences] ダイアログ ボックス (図 4-10) が表示されます。
図 4-10 [Preferences] メニュー ([General] タブ)
操作モードの他に、[Preferences] ダイアログ ボックスを使用して以下の設定を変更できます。
これらの値を変更するには、[Tools] メニューから [Preferences] ダイアログ ボックスを開いて、以降の節で説明する手順に進みます。
電子メールのプリファレンスを変更するには、次の手順に従います。
永続性を有効にすると、側面の値がファイルに保存され、[View] メニューを開いて [View Historical Data] を選択するとその値をチャートで確認することができます (「履歴データの表示」を参照)。
永続化する側面の選択 永続性のプリファレンスを設定するには、次の手順に従います。
注意 : 接続を切断しないでこのダイアログ ボックスを使用しようとすると、切断するように求められます。
[Aspects to persist] パネルのチェックボックスが有効になります (図 4-13)。
図 4-13 [Aspects to persist] パネル
選択した側面の値がファイルに保存されます。「履歴データの表示」で説明するように、その値をチャートで確認することができます。
永続ディレクトリの指定 永続化する側面のプリファレンス設定の他に、側面の値が含まれるファイルの保存先 (「永続ディレクトリ」) も指定できます。次の手順に従います。
永続化された値のログの消去 最後に、[Clear all aspect logs] をクリックすると、永続化された値のすべてのログを消去できます。確認のメッセージが表示されたら [Yes] をクリックします。このボタンをクリックして永続化された値のログをすべて削除すると、<USER_HOME>/console/data directory
に格納されたその他のファイルも削除されることに注意してください。
この節で説明するように、コンソールをカスタマイズして、モニタ データの表示方法を変更することができます。
ゲージとバーは、メモリとプロセッサの使用率を示すグラフィカルな手段です (図 4-14)。
図 4-15 ゲージのコンテキスト メニュー (バー表示への変更)
選択したゲージがバーとして表示されます (図 4-16)。
図 4-16 ゲージとバー (ゲージをバー表示に切り替えた状態)
Management Console には BEA JRockit に関する特定の情報を表すチャートが表示されます。
JRockit Management Console を編集すると、設定は consolesettings.xml
というファイルに自動的に保存されます。このファイルは次のフォルダにあります。
<user home directory>¥ManagementConsole
ユーザのホーム ディレクトリの実際のパスはプラットフォームによって異なります。Windows では ¥Documents and Settings¥<username>
のようになります。次に例を示します。
C:¥Documents and Settings¥jsmith¥ManagementConsole
このディレクトリに設定ファイルがない場合は、次に Management Console が閉じられるときに自動的に作成されます。
警告 : このファイルは手動で編集しないでください。編集すると、ファイルが使用できなくなり、Management Console が起動時にクラッシュする可能性があります。
設定ファイルに問題が発生した場合は、いつでもファイルを削除して、Management Console に新しいファイルを作成させることができます。
JRockit Management Console は BEA JRockit JVM のさまざまな「側面」をモニタします。側面とは、使用されるヒープ サイズや VM のアップタイムのような測定可能なデータです。
情報タブは、モニタされる BEA JRockit JVM のさまざまな領域に関する詳細が含まれるページです。タブを表示するには、タブをクリックするか [View] メニューにアクセスします。この節では、JRockit Management Console で使用できるタブについて説明します。
[Overview] タブ (図 4-19) には選択した接続の概要が表示されます。複数の接続を選択するには、表示する接続が含まれるフォルダを選択します。複数の接続が同時に表示されます。ページは、ゲージのある上部の「ダッシュボード」と、下部のチャートに分かれています。
[Memory] タブ (図 4-20) にはシステムのメモリの状態に関する情報が表示されます。
ページの下部には以下のテキスト情報が表示されます (KB 単位)。
[Memory] タブから JVM のメモリに関する特定の側面を操作できます。その側面について表 4-1 で説明します。
|
|
|
|
[Processor] タブ (図 4-21) にはシステムのプロセッサの状態に関する情報が表示されます。
[System] タブ (図 4-22) にはシステムの状態に関するさまざまな情報が表示されます。
-Xgcprio
) を使用している場合、ガベージ コレクタが変わるとこの値が変わります。動的なガベージ コレクタの詳細については、「動的なガベージ コレクタの実行」を参照してください。[Notification] タブ (図 4-23) を使用して、特定のイベントが発生した場合にユーザに通知する警告を定義します。さまざまなトリガに基づき、オプションで制約を指定して、所定の通知で警告する独自の通知ルールを作成することができます。この節では、これらのルールの作成方法について説明します。
Management Console を初めて起動すると、consolesettings.xml
というファイルが <user_home>
ディレクトリの ¥ManagementConsole
ディレクトリに作成されます。このファイルの中に、デフォルトのアクションと制約のエントリがあります。カスタムのアクションと制約をプログラムで作成することができます。それらもこのファイルに格納されます。追加されたアクションと制約は Management Console の [Notification] タブに表示されます。カスタム通知アクションおよび制約の作成の詳細については、「カスタム通知アクションおよび制約の追加」を参照してください。
図 4-23 [Notification] タブ (ルールが定義されていない状態)
通知トリガとして、BEA JRockit JVM への接続が失われた場合や、ある側面が特定の値に達した場合 (たとえば、メモリ使用率が 95% に達した場合) などの特定のイベントを指定できます。通知の制約では、たとえば夜間や特定の日付に警告を送信しないようにして、ルールがトリガされる時間を制限することができます。
通知アクションは、ユーザへのアラートの通知方法です。以下のいずれかになります。
ルールは通知をいつどのように発行するかを決定するものです。新しいルールを作成するには、次の手順に従います。
[Name your rule] ダイアログ ボックスが表示されます (図 4-24)。
図 4-24 [Name your rule] ダイアログ ボックス
[Select trigger] ダイアログ ボックス (図 4-25) が表示されます。
図 4-25 [Select trigger] ダイアログ ボックス
図 4-26 トリガのしきい値とオプションのテキスト ボックス
[Select action] ダイアログ ボックス (図 4-27) が表示されます。
図 4-27 [Select action] ダイアログ ボックス
[Select constraint(s)] ダイアログ ボックス (図 4-28) が表示されます。
図 4-28 [Select constraint(s)] ダイアログ ボックス
図 4-29 のように、制約名が追加リストに表示されます。
図 4-30 のように、新しいルールが [Notification] タブの [All available rules] リストに表示されます。
BEA JRockit JVM にルールを追加するには、次の手順に従います。
図 4-31 のように、[Active rules for this connection] リストにルールが表示されます。
図 4-31 [Active rules for this connection] リストに追加されたルール
BEA JRockit JVM からルールを削除するには、次の手順に従います。
[Available rules] リストからルールを削除するには、次の手順に従います。
履歴データ ウィンドウには側面の履歴データを参照できるチャートが表示されます。BEA JRockit JVM で動作するサーバの負荷のピーク時を見つけるなどの、時間による傾向を観察するのに便利です。
図 4-32 履歴データのサブメニューが開かれた [View] メニュー
選択した側面の履歴データが表示されます (図 4-33)。
図 4-33 履歴データ ([CPU Load] を選択した場合)
履歴データを表示するには、BEA JRockit JVM の側面のデータが永続化されている (ファイルに書き込まれている) 必要があります。永続性を有効または無効にするには、「その他のプリファレンスの設定」を参照してください。以下の側面は永続化できるため、その履歴データを表示することができます。
接続中の接続でデータが作成されたら、すぐに履歴の観察に使用できます。
この節では、Management Console のより高度な機能について説明します。一部の機能は開発者モードで実行している場合にのみ使用できます。「操作モードの設定」を参照してください。
スタック ダンプには BEA JRockit JVM で動作中のすべてのスレッドのリストが含まれています。メソッド呼び出しのスタック トレースがスレッドごとに示されます。
スレッド スタック ダンプを表示するには、[Tool] メニューを開いて [View Thread Stack Dump] を選択します。スタック ダンプを含むダイアログ ボックスが表示されます (図 4-34)。
図 4-34 [Thread Stack Dump] ダイアログ ボックス
注意 : この節で説明するタスクを実行する前に、開発者操作モードにする必要があります。開発者操作モードに入る方法については、「操作モードの設定」を参照してください。
[Method Profiler] タブを使用すると、開発者はメソッドの実行を非侵入的な方法でモニタできます。メソッド プロファイラは、選択したメソッドにかかった平均時間とメソッドの呼び出し回数に関する情報を提供します。
メソッド テンプレートはさまざまな接続で再利用できるメソッドの集合です。デフォルトのテンプレートがありますが、新しいテンプレートを作成することもできます。
[Enter class name] ダイアログ ボックス (図 4-35) が表示されます。
図 4-35 [Enter class name] ダイアログ ボックス
[Select method] ダイアログ ボックス (図 4-36) が表示されます。
図 4-36 [Select method] ダイアログ ボックス
図 4-37 のように、メソッド名が [Method profiling information] リストに表示されます。
図 4-37 メソッドが追加された [Method profiling information] リスト
テンプレートからメソッドを削除するには、次の手順に従います。
[New template] ダイアログ ボックスが表示されます (図 4-38)。
図 4-38 [New template] ダイアログ ボックス
メソッド プロファイリングを開始するには、次の手順に従います。
メソッド プロファイリングのテーブルでは、メソッドの完全修飾名または短い名前の使用を切り替えることができます。
[Exception Count] タブ (図 4-39) には、BEA JRockit JVM で送出される例外が表示されます。特定のタイプの例外が送出された回数をカウントします。
例外カウントを開始するには、[Start] をクリックします。カウントされている例外の名前の横に結果が表示されます。同様に、例外カウントを停止するには、[Stop] をクリックします。
カウントから例外を削除するには、削除する例外を選択して、[Remove] をクリックします。
BEA JRockit Runtime Analyzer (JRA) は、BEA JRockit とその上で動作する Java アプリケーションの実行時のパフォーマンスを分析するために、BEA JRockit の開発チームが使用する内部的なツールです。このツールは、開発チームにとって有用な BEA JRockit の内部情報と、BEA JRockit 全般に関する情報を提供します。
JRA の一部は JVM の内部で動作し、JVM とそこで現在動作している Java アプリケーションについての情報を記録します。このツールは、以降の手順で説明するように、Management Console から起動します。記録された情報はファイルに保存され、アナライザ ツールで表示できます。『JRockit Runtime Analyzer ユーザーズ ガイド』を参照してください。
注意 : 記録を作成するには、開発者モードで作業している必要があります。「操作モードの設定」を参照してください。
[JRA Recording] ダイアログ ボックス (図 4-40) が表示されます。
図 4-40 [JRA Recording] ダイアログ ボックス
[JRA Recording Progress] ダイアログ ボックス (図 4-41) が表示されます。
図 4-41 [JRA Recording Progress] ボックス
記録を表示するには、アナライザ ツールを使用します。「BEA JRockit Runtime Analyzer の使い方」を参照してください。
JRockit Management Console を閉じてすべての接続を切断するには、[Connection] メニューを開いて [Exit] を選択します。ウィンドウ右上隅の [X] をクリックして JRockit Management Console を閉じることもできます。
Management Console とその通知サブシステムやユーザ アクションを、GUI を使用せずに実行することができます。この機能をコンソールの「ヘッドレス」モードでの実行といいます。この機能により、BEA JRockit の実行に必要となるシステム オーバーヘッドを大幅に削減できます。
コンソールをヘッドレス モードで実行するには、通常と同じようにコンソールを起動しますが (詳細については、「JRockit Management Console を起動する」を参照)、次の例のように -headless コマンドライン オプションを追加します。
java -jar ManagementConsole.jar -headless
表 4-2 で説明するコマンドライン オプションを使用すると、コンソールの動作を制御できます。
実行中、Management Console に関連付けられている JVM の統計をファイルに書き込むことができます。統計が書き込まれるファイルは、データを保存、つまり「永続化」することにした場合にのみ自動的に作成されます。ファイルは選択したディレクトリに作成されます。
XML 設定ファイルに設定することで、どの JVM 統計を永続化するかを制御できます。GUI モードで実行しているときにアプリケーションを終了すると、設定ファイルが自動的に作成されます。デフォルトでは、<user_home>/.ManagementConsole
ディレクトリに作成されます。-settings
コマンドライン オプションを使用すると、別の場所にある別のファイルを指定できます。
表 4-2 に示すコマンドライン オプションを使用して、ヘッドレスな Management Console の動作を制御できます。
注意 : これらのオプションはコンソールをヘッドレス モードで実行する場合だけでなく、GUI で実行するときにも有効です。
java -jar ManagementConsole.jar -headless -settings
C:¥Headless¥consolesettings.xml -connectall -autoconnect -uptime 3600
-useraction ctrlbreak 30 60