ここでは、パフォーマンス問題のデバッグに使用できる、各種 Identity Manager と、第三者のデバッグツールについて説明します。
これらの情報は、次のように構成されています。
トレースは、システムパフォーマンスに影響を及ぼします。最適なパフォーマンスが得られるようにするには、最小限のトレースレベルを指定するか、システムのデバッグ後にトレースを無効に設定してください。
ここでは、Identity Manager のデバッグページにアクセスする手順を説明するとともに、このページを使用して Identity Manager のパフォーマンス問題を突き止めデバッグする方法について説明します。
これについては、次のセクションを参照してください。
Identity Manager のデバッグページにアクセスして操作を実行するには、Debug、Security Administrator、または Waveset Administrator 機能が必要です。管理者とコンフィギュレータには、デフォルトでこの機能が割り当てられています。
デバッグ機能がない場合は、エラーメッセージが表示されます。
ブラウザを開き、管理者インタフェースにログインします。
次の URL を入力します。
http:// host:port /idm/debug
各表記の意味は次のとおりです。
host は、Identity Manager の実行先アプリケーションサーバーです。
port は、このサーバーが監視中の TCP ポート数です。
システム設定ページが表示されたら、開くデバッグページの .jsp ファイル名を入力します。
たとえば、次のようにします。
http:// host: port /idm/debug/pageName.jsp
デバッグユーティリティーの中には、システム設定ページからリンクされていないものもありますが、これらを使用すると、製品のパフォーマンスと使いやすさのデータを収集できるようになります。デバッグページの全体リストについては、コマンドウィンドウを開いて idm/debug ディレクトリの中身をリストします。
各種メソッドの呼び出しタイマー統計を収集して表示するには、制御タイミングページを使用します。この情報を基に、特定メソッドに対するボトルネックと呼び出された API を追跡できます。呼び出しタイマーの基準値をインポートまたはエクスポートするのにも、呼び出しタイミングページのこのオプションが使用できます。
呼び出しタイミングの統計は、トレースが有効に設定されている間にだけ収集されます。
トレースとタイミングを有効にするには、「制御タイミング」ページを開き、「タイミングとトレースの開始」をクリックします。
タイミングを終了するには、「タイミングとトレースの終了」をクリックするか「タイミングの終了」をクリックします。
ページが再表示され、統計が使用できるメソッドのリストとメソッドの集約呼び出しタイマー統計が「タイミングの表示」テーブルに入力されます (呼び出し側から中断されません)。
このテーブルには、次の情報が記載されています。
メソッド名 (呼び出すメソッドを表示するには、そのメソッド名をクリックします)
総使用時間
平均時間
最小時間
最大時間
総呼び出し数
総エラー数
このリストを消去するには、「タイミングの消去」をクリックします。
コンソールから呼び出しタイマーのデータを収集するには、callTimer コマンドを使用します。このコマンドは、アップグレード中や、アプリケーションサーバーで Identity Manager を実行していないなどの状況で、パフォーマンス問題をデバッグする際に有用です。
Identity Manager をインストールしたときに付属している Java クラスにトレースを有効にを設定するには、「トレース設定の編集」ページを使用します。
具体的には、このページから次のトレース設定を行えます。
トレースするには、メソッド、クラス、またはパッケージを選択して、取り込むトレースのレベルを指定します。
トレース情報をファイルまたは標準出力先に送信します。
格納対象となるトレースファイルの最大数と、各ファイルの最大サイズを指定します。
トレース出力ファイル内の日時の書式設定方法を指定します。
キャッシュ対象となるメソッドの最大数を指定します。
トレースファイルへのデータの書き込み方を指定します。
データが生成されるに従って、データがトレースファイルに書き込まれるか、データがキューに入れられてからファイルに書き込まれます。
データソースを使用しない場合は、「ホスト接続プール」ページから接続プール統計を表示することができます。これらの統計には、プールのバージョン、作成された接続数、アクティブ数、プール内の接続数、プールから処理されている要求数、および破棄された接続数が記載されます。
この「ホスト接続プール」ページは、ゲートウェイへの接続管理に使用された接続プールの概要を表示する際にも使用できます。この情報を使用して、低位アドレスメモリー状態を調べられます。
最近使用した XML パーサーをキャッシュから消去して低位アドレスメモリー状態を調べるには、「消去したキャッシュのリスト」ページを使用します。
メソッドレベルですばやくホットスポットを検出して評価するには、「メソッドタイミング」ページを使用します。
Identity Manager メソッドから収集され、「メソッドタイミング」ページに表示される情報は、次のとおりです。
メソッド名
メソッドが呼び出された回数
メソッドがエラー状態で終了した回数
メソッドによって消費された平均時間
各メソッドの呼び出しによって消費された最小時間と最大時間
「メソッドタイミング」ページには、次のリンクを記載したテーブルもあります。これらのリンクをクリックすると、詳細を表示できます。
「詳細」。呼び出しスタックの情報が表示されます。
「履歴」。最後の呼び出し時刻とともに、呼び出し期間のグラフが表示されます。
「履歴データ」。呼び出しが生成された時刻とその呼び出し期間とともに、最後の呼び出しのリストが表示されます。
Identity Manager は、デフォルトでスタック履歴を保持しません。スタック履歴を保持してその深さを制御するには、Waveset.properites を編集して MethodTimer キーを調べます。
「メソッドタイミング」ページにある「すべて消去」オプションは、全ての結果を消去します。このオプションは、デフォルトで有効になっています。
システムに影響を及ぼしかねない大きそうなオブジェクトを検出するには、この「オブジェクトサイズの概要」ページを使用します。
この「オブジェクトサイズの概要」ページには、リポジトリに格納されるオブジェクトのサイズが (文字単位) で表示されます。このオブジェクトは型別にリストされ、型別の総オブジェクト数とオブジェクトの組み合わせ総サイズ、平均サイズ、最大サイズ、および最小サイズが記載されます。
そのオブジェクト型のサイズの詳細は、「型」列のエントリをクリックします。たとえば、リポジトリ内の最大設定オブジェクトの ID、名、サイズを表示するには、「設定」をクリックします。
このサイズ情報は、「コンソール」コマンドラインからもアクセスできます。
コンソールを開きます。
コマンドプロンプトで、次を入力します。
showSizes [ type[limit ]]
アップグレードの場合、更新または再表示されるまで既存オブジェクトのサイズが 0 と記録されます。
システムで使用中のプロビジョニングスレッドの概要を表示するには、この「管理者とコンフィギュレータ用のプロビジョニングスレッド」を使用します。この概要は、Show_Threads.jsp で用意される情報のサブセットです。
単一のスレッドダンプを見ただけでは、判断できないことがあります。
低位アドレスメモリー状態の調査に役立つよう、次の項目について表示するには、この「システムキャッシュの概要」ページを使用します。
管理者に関連付けられているオブジェクトキャッシュ
システムオブジェクトのキャッシュ
ユーザーのログインセッション
XML パーサーのキャッシュ
利用可能な総メモリー数と空きメモリーを表示するには、この「システムメモリーの概要」ページを使用します。調整などのメモリーを消費する機能を使用している場合は、この情報を基にして JVM に十分なメモリーが割り当てられているかどうかが突き止められます。
また、ガベージコレクションの起動や、ヒープ使用量を調査するための JVM 内の未使用メモリーの消去にも、このページが役に立ちます。
この「システムプロパティー」ページには、ソフトウェアバージョン、パス、環境変数など、使用中の環境についての情報が記載されます。
(調整や Active Sync などの) 自動プロセスが実行中であることを確認できるように、実行中のプロセスを表示するには、この「システムスレッド」ページを使用します。
このページには、プロセス種類、プロセス名、そのプロパティー、プロセスがデーモンかどうか、およびプロセスがいまだに実行中かどうかについての情報が記載されます。
単一のスレッドダンプを見ただけでは、判断できないことがあります。
最近ログインしたユーザーのキャッシュ済みセッションをすべて消去し、低位アドレスメモリー状態を調べるには、この「消去されたセッションプール」ページを使用します。
Waveset.properties ファイルのプロパティーを表示して一時的に編集するには、この「Waveset プロパティー」ページを使用します。Waveset.properties ファイルの常駐先の特定サーバーには、サーバーを再起動して変更内容を反映していなくても、各種のプロパティー設定をテストできます。編集したプロパティー設定は、次回サーバーを再起動するまで、反映されたままになります。
テスト XML リソースアダプタをキャッシュから消去し、低位アドレスメモリー状態を調べるには、この「フラッシュして消去された XML リソースアダプタのキャッシュ」ページを使用します。
パフォーマンスの潜在的ボトルネックを見つけるには、次の Sun Microsystems ツールと第三者ツールが使用できます。
これらのツールは、使用中の配備でカスタム Java クラスを使用する場合に有用です。
Identity Manager には、使用中の配備のパフォーマンス問題をトラブルシューティングするのに役立つ Profiler ユーティリティーが搭載されています。
カスタマイズしたフォーム、Java、ルール、ワークフロー、および XPRESS がパフォーマンス問題とスケール問題の原因になることがあります。この Profiler は各領域での経過時間を調べるので、フォーム、Java、ルール、ワークフロー、XPRESS オブジェクトのうちどれがパフォーマンス問題とスケール問題の一因となっているか、一因となっている場合は、そのオブジェクトのどの部分が問題の原因になっているかがわかります。
Profiler の詳細は、『Sun Identity Manager 8.1 リリースノート』の「Identity Manager プロファイラの操作」を参照してください。
DTrace 機能は、Solaris 10 オペレーティングシステム用に動的にトレースするフレームワークで、JVM 動作を監視できるようになります。
DTrace には、30,000 を超える検証機能が搭載されており、統合されたユーザーレベルとカーネルレベルのトレース機能を使用して、プロダクションシステム内を把握できるようにします。また、C 言語や awk 言語に似た D 言語で、任意のデータと式をトレースすることもできます。この DTrace 機能にも、JVM を監視するための特殊なサポートが備わっているので、使用中のシステム全体と JVM 外部のスパンが監視できるようになります。
DTrace は、検証機能が JVM に内蔵されているので Java 6 で一番使用しやすくなっています。この機能は、Java 1.4 と Java 5 でも動作しますが、次の URL から JVM PI または JVM TI エージェントをダウンロードする必要があります。
https://solaris10-dtrace-vm-agents.dev.java.net/
次の例は、DTrace スクリプトの記述方法を示したものです。
#!/usr/sbin/dtrace -Zs #pragma D option quiet hotspot$1::: { printf("%s\n", probename); } |
この例では、$1 をスクリプトの最初の引数に置き換えてください。これは、管理対象となる Java プロセスの PID としてください。たとえば、次のようにします。
# ./all-jvm-probes.d 1234
次の表は、各種 DTrace の検証機能を有効にできるコマンドを説明したものです。
表 4–3 DTrace コマンド
DTrace はシステム処理を増やすため、この機能はシステムパフォーマンスに影響します。この影響はごくわずかですが、負荷のかかる有効化で大量の検証機能を有効にすると大きくなります。
DTrace のパフォーマンスへの影響を最小限に抑える手順については、『Solaris Dynamic Tracing Guide』の「Performance Considerations」の章に記載されています。
DTrace の詳細は、/usr/demo/dtrace および man dtrace を参照してください。
Identity Manager を使用すると、Java Management Extensions (JMXTM) を使用して、所定のリソースアダプタの操作における操作上の統計を取り込み表示することができます。このデータは、システム状態とレポートを監視するなど、診断と予測に使用できます。
この統計データには、次の情報が含まれています。
動作が実行された回数
操作の最小期間、最大期間、平均期間
オブジェクト |
監視対象となった動作 |
---|---|
アカウントの場合 |
|
動作の場合 |
Run |
その他オブジェクトの場合 |
|
JMX は、サーバー別のリソースアダプタごとに MBeans を作成して、これらの Beans を次のパターンに一致する名前で登録します。
serverName=server name, resourceAdapterType=Resource Adapter Type, resourceAdapterName=Resource Adapter Name |
Identity Manager は、正常に完了したかエラーで完了したか、完了した処理のすべてに統計を記録します。ただし Identity Manager は、例外を投げる処理など未完成の処理の統計は記録しません。
excludes の設定方法は、次のとおりです。
管理者インタフェースから、「設定」->「サーバー」の順に選択します。
「サーバーの設定」ページで、次のいずれかのタスクを実行します。
サーバーのデフォルト設定を編集するには、「サーバーのデフォルト設定の編集」ボタンをクリックします。
サーバーのポリシーを編集するには、そのサーバーのリンクをクリックします。
リソース監視を有効にするには、「JMX」タブをクリックして「JMX リソースアダプタモニターの有効化」ボックスを有効にします。
特定のリソースを除外するには、「JJMX リソースアダプタモニターの対象外」リストに正規表現を追加します。
特定動作の監視を除外するには、「JMX リソースアダプタモニター操作の対象外」リストに正規表現を追加します。
どの excludes も、正規表現を使用します。特定リソースを除外した場合、JMX はリソース名だけで照合します。たとえば次の名前のアダプタがある場合は、
resource1 resource2 resource3 resource10 resource11 |
次のパターンを指定します。
.*1$ |
つまり、何かが 1 (1$) で終わるまで、0 以上の任意の文字 (.*) にマッチします。JMX は、resource1 と resource11 を除外します。
処理の場合も、手順は同様です。処理に次の名前が付いている場合は、パターンがこの名前に一致する必要があります。
ACCOUNT_CREATE ACCOUNT_UPDATE ACCOUNT_DELETE ACCOUNT_GET ACCOUNT_AUTHENTICATE OBJECT_CREATE OBJECT_UPDATE OBJECT_DELETE OBJECT_GET OBJECT_LIST ACTION_RUN |
たとえば、^ACCOUNT.* パターンは ACCOUNT で始まるすべての処理を除外します。または、このパターンを使用すると updates と deletes が除外されます。
.*UPDATE$ .*DELETE$ |
JMX の設定方法と使用法の詳細は、『『Sun Identity Manager 8.1 ビジネス管理者ガイド』』の「JMX 監視の設定」 および 『Sun Identity Manager 8.1 ビジネス管理者ガイド』の「JMX パブリッシャータイプ」を参照してください。
Java Monitoring and Management Console (JConsole) は、Java Management Extension (JMX) テクノロジ対応のグラフィカル管理ツールで、JDK 5 以降に同梱されています。JConsole は実行中の JVM に接続し、接続している JMX エージェントの JVM MBeans から情報を収集します。
具体的に JConsole で実行できるタスクは、次のとおりです。
低位アドレスメモリーとデッドロックの検出
JConsole は、メモリーシステム、メモリープール、および MBeans ガベージコレクタにアクセスして、メモリー消費量、メモリープール、ガベージコレクション統計などのメモリー使用量に関する情報を表示します。
ガベージコレクションの有効化または無効化
冗長トレースの有効化または無効化
ローカルおよびリモートアプリケーションの監視
現在のヒープメモリー使用量、ヒープ以外のメモリー使用量、ファイナライズに保留されているオブジェクト数など、MBeans の監視と管理を行います。
パフォーマンス、リソース消費量、およびサーバー統計に関する情報を表示
JVM と監視した値、アプリケーションで実行中のスレッド、および読み込まれたクラスに関する概要を表示
オペレーティングシステムリソース (Sun のプラットフォーム拡張) に関する情報を表示。次のようなものがあります。
CPU プロセス時間
利用可能な物理メモリーの総容量と空き容量
確定した仮想メモリー量 (プロセスの実行に確実に利用できる仮想メモリー量)
利用可能なスワップ領域の総容量と空き容量
オープンファイルの記述数 (UNIX® のみ)
JConsole を使用した Java プラットフォーム上のアプリケーション監視の詳細は、「JConsole を使用したアプリケーション監視」という Sun Developer Network (SDN) 記事を参照してください。次の URL から入手できます。
http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html
Identity Manager には、次の点に関する情報を提供する JMX MBeans がいくつか搭載されています。
Identity Manager Server Cluster
データエクスポータ
スケジューラ
潜在的なパフォーマンスボトルネックを見つけるには、Java プラットフォーム用オープンソースのパフォーマンスプロファイラである Java Runtime Analysis Toolkit (JRat) を使用します。使用中の配備でカスタム Java クラスを使用する場合は特に使用します。JRat は、使用中のアプリケーションの実行を監視し、アプリケーションのパフォーマンスの測定を維持します。
たとえば、プロビジョニングにカスタムワークフローがある場合にこの JRat を使用すると、呼び出されているクラスを表示したり、デフォルトの Identity Manager プロビジョニングワークフローと比較したワークフローの実行に掛かる時間を表示できます。
JRat の詳細は、http://jrat.sourceforge.net を参照してください。