Sun Identity Manager 8.1 システム管理者ガイド

パフォーマンス問題のデバッグ

ここでは、パフォーマンス問題のデバッグに使用できる、各種 Identity Manager と、第三者のデバッグツールについて説明します。

これらの情報は、次のように構成されています。

Identity Manager のデバッグページの使用


注 –

トレースは、システムパフォーマンスに影響を及ぼします。最適なパフォーマンスが得られるようにするには、最小限のトレースレベルを指定するか、システムのデバッグ後にトレースを無効に設定してください。


ここでは、Identity Manager のデバッグページにアクセスする手順を説明するとともに、このページを使用して Identity Manager のパフォーマンス問題を突き止めデバッグする方法について説明します。

これについては、次のセクションを参照してください。

デバッグページへのアクセス方法


注 –

Identity Manager のデバッグページにアクセスして操作を実行するには、DebugSecurity Administrator、または Waveset Administrator 機能が必要です。管理者とコンフィギュレータには、デフォルトでこの機能が割り当てられています。

デバッグ機能がない場合は、エラーメッセージが表示されます。


ProcedureIdentity Manager のデバッグページにアクセスする

  1. ブラウザを開き、管理者インタフェースにログインします。

  2. 次の URL を入力します。

    http:// host:port /idm/debug

    各表記の意味は次のとおりです。

    • host は、Identity Manager の実行先アプリケーションサーバーです。

    • port は、このサーバーが監視中の TCP ポート数です。

  3. システム設定ページが表示されたら、開くデバッグページの .jsp ファイル名を入力します。

    たとえば、次のようにします。

    http:// host: port /idm/debug/pageName.jsp


    注 –

    デバッグユーティリティーの中には、システム設定ページからリンクされていないものもありますが、これらを使用すると、製品のパフォーマンスと使いやすさのデータを収集できるようになります。デバッグページの全体リストについては、コマンドウィンドウを開いて idm/debug ディレクトリの中身をリストします。


制御タイミング (callTimer.jsp)

各種メソッドの呼び出しタイマー統計を収集して表示するには、制御タイミングページを使用します。この情報を基に、特定メソッドに対するボトルネックと呼び出された API を追跡できます。呼び出しタイマーの基準値をインポートまたはエクスポートするのにも、呼び出しタイミングページのこのオプションが使用できます。


注 –

呼び出しタイミングの統計は、トレースが有効に設定されている間にだけ収集されます。


Procedure呼び出しタイマーの統計を表示する

  1. トレースとタイミングを有効にするには、「制御タイミング」ページを開き、「タイミングとトレースの開始」をクリックします。

  2. タイミングを終了するには、「タイミングとトレースの終了」をクリックするか「タイミングの終了」をクリックします。

    ページが再表示され、統計が使用できるメソッドのリストとメソッドの集約呼び出しタイマー統計が「タイミングの表示」テーブルに入力されます (呼び出し側から中断されません)。

    このテーブルには、次の情報が記載されています。

    • メソッド名 (呼び出すメソッドを表示するには、そのメソッド名をクリックします)

    • 総使用時間

    • 平均時間

    • 最小時間

    • 最大時間

    • 総呼び出し数

    • 総エラー数

  3. このリストを消去するには、「タイミングの消去」をクリックします。


    注 –

    コンソールから呼び出しタイマーのデータを収集するには、callTimer コマンドを使用します。このコマンドは、アップグレード中や、アプリケーションサーバーで Identity Manager を実行していないなどの状況で、パフォーマンス問題をデバッグする際に有用です。


トレース設定の編集 (Show_Trace.jsp)

Identity Manager をインストールしたときに付属している Java クラスにトレースを有効にを設定するには、「トレース設定の編集」ページを使用します。

具体的には、このページから次のトレース設定を行えます。

ホスト接続プール (Show_ConnectionPools.jsp )

データソースを使用しない場合は、「ホスト接続プール」ページから接続プール統計を表示することができます。これらの統計には、プールのバージョン、作成された接続数、アクティブ数、プール内の接続数、プールから処理されている要求数、および破棄された接続数が記載されます。

この「ホスト接続プール」ページは、ゲートウェイへの接続管理に使用された接続プールの概要を表示する際にも使用できます。この情報を使用して、低位アドレスメモリー状態を調べられます。

消去したキャッシュのリスト (Clear_XMLParser_Cache.jsp)

最近使用した XML パーサーをキャッシュから消去して低位アドレスメモリー状態を調べるには、「消去したキャッシュのリスト」ページを使用します。

メソッドタイミング (Show_Timings.jsp)

メソッドレベルですばやくホットスポットを検出して評価するには、「メソッドタイミング」ページを使用します。

Identity Manager メソッドから収集され、「メソッドタイミング」ページに表示される情報は、次のとおりです。

「メソッドタイミング」ページには、次のリンクを記載したテーブルもあります。これらのリンクをクリックすると、詳細を表示できます。


注 –

「メソッドタイミング」ページにある「すべて消去」オプションは、全ての結果を消去します。このオプションは、デフォルトで有効になっています。


オブジェクトサイズの概要 (Show_Sizes.jsp)

システムに影響を及ぼしかねない大きそうなオブジェクトを検出するには、この「オブジェクトサイズの概要」ページを使用します。

この「オブジェクトサイズの概要」ページには、リポジトリに格納されるオブジェクトのサイズが (文字単位) で表示されます。このオブジェクトは型別にリストされ、型別の総オブジェクト数とオブジェクトの組み合わせ総サイズ、平均サイズ、最大サイズ、および最小サイズが記載されます。

そのオブジェクト型のサイズの詳細は、「型」列のエントリをクリックします。たとえば、リポジトリ内の最大設定オブジェクトの ID、名、サイズを表示するには、「設定」をクリックします。

このサイズ情報は、「コンソール」コマンドラインからもアクセスできます。

Procedureコマンドラインからオブジェクトサイズ情報にアクセスする

  1. コンソールを開きます。

  2. コマンドプロンプトで、次を入力します。

    showSizes [ type[limit ]]


    注 –

    アップグレードの場合、更新または再表示されるまで既存オブジェクトのサイズが 0 と記録されます。


管理者とコンフィギュレータ用のプロビジョニングスレッド (Show_Provisioning.jsp)

システムで使用中のプロビジョニングスレッドの概要を表示するには、この「管理者とコンフィギュレータ用のプロビジョニングスレッド」を使用します。この概要は、Show_Threads.jsp で用意される情報のサブセットです。


注 –

単一のスレッドダンプを見ただけでは、判断できないことがあります。


システムキャッシュの概要 (Show_CacheSummary.jsp)

低位アドレスメモリー状態の調査に役立つよう、次の項目について表示するには、この「システムキャッシュの概要」ページを使用します。

システムメモリーの概要 (Show_Memory.jsp)

利用可能な総メモリー数と空きメモリーを表示するには、この「システムメモリーの概要」ページを使用します。調整などのメモリーを消費する機能を使用している場合は、この情報を基にして JVM に十分なメモリーが割り当てられているかどうかが突き止められます。

また、ガベージコレクションの起動や、ヒープ使用量を調査するための JVM 内の未使用メモリーの消去にも、このページが役に立ちます。

システムプロパティー (SysInfo.jsp)

この「システムプロパティー」ページには、ソフトウェアバージョン、パス、環境変数など、使用中の環境についての情報が記載されます。

システムスレッド (Show_Threads.jsp)

(調整や Active Sync などの) 自動プロセスが実行中であることを確認できるように、実行中のプロセスを表示するには、この「システムスレッド」ページを使用します。

このページには、プロセス種類、プロセス名、そのプロパティー、プロセスがデーモンかどうか、およびプロセスがいまだに実行中かどうかについての情報が記載されます。


注 –

単一のスレッドダンプを見ただけでは、判断できないことがあります。


消去されたユーザーセッションプール (Clear_User_Cache.jsp)

最近ログインしたユーザーのキャッシュ済みセッションをすべて消去し、低位アドレスメモリー状態を調べるには、この「消去されたセッションプール」ページを使用します。

Waveset プロパティー (Show_WSProp.jsp)

Waveset.properties ファイルのプロパティーを表示して一時的に編集するには、この「Waveset プロパティー」ページを使用します。Waveset.properties ファイルの常駐先の特定サーバーには、サーバーを再起動して変更内容を反映していなくても、各種のプロパティー設定をテストできます。編集したプロパティー設定は、次回サーバーを再起動するまで、反映されたままになります。

フラッシュして消去された XML リソースアダプタのキャッシュ (Clear_XMLResourceAdapter_Cache.jsp)

テスト XML リソースアダプタをキャッシュから消去し、低位アドレスメモリー状態を調べるには、この「フラッシュして消去された XML リソースアダプタのキャッシュ」ページを使用します。

それ以外のデバッグツールの使用

パフォーマンスの潜在的ボトルネックを見つけるには、次の Sun Microsystems ツールと第三者ツールが使用できます。

これらのツールは、使用中の配備でカスタム Java クラスを使用する場合に有用です。

Identity Manager Profiler

Identity Manager には、使用中の配備のパフォーマンス問題をトラブルシューティングするのに役立つ Profiler ユーティリティーが搭載されています。

カスタマイズしたフォーム、Java、ルール、ワークフロー、および XPRESS がパフォーマンス問題とスケール問題の原因になることがあります。この Profiler は各領域での経過時間を調べるので、フォーム、Java、ルール、ワークフロー、XPRESS オブジェクトのうちどれがパフォーマンス問題とスケール問題の一因となっているか、一因となっている場合は、そのオブジェクトのどの部分が問題の原因になっているかがわかります。


注 –

Profiler の詳細は、『Sun Identity Manager 8.1 リリースノート』「Identity Manager プロファイラの操作」を参照してください。


DTrace の使用

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 スクリプトの記述方法を示したものです。


例 4–2 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 コマンド

コマンド 

説明 

-XX:+DTraceMonitorProbes

Java 6 の JVM サポートを有効にします (Java 1.4 と Java 5 用パッチ)。 

-XX:+ExtendedDTraceProbes

次の情報を提供します。 

  • JVM の起動 (開始と終了) とシャットダウン

  • 開始スレッドと停止スレッド

  • 読み込み中クラスと読み込み解除中のクラス

  • ガベージコレクション (各種オプションが利用可能)

  • JIT コンパイルの開始と終了

  • 読み込み中コンパイル済みメソッドと読み込み解除中のコンパイル済みメソッド

  • 監視競合、待機、通知

  • メソッドのエントリ、メソッドの戻り値、オブジェクト割り当て

/usr/sbin/dtrace -n ’hotspot*:::’

そのシステム上のすべての Java プロセスに、すべての JVM 検証機能を有効にします。 

/usr/sbin/dtrace -n ’hotspot1234:::’

PID が 1234 の Java プロセスにだけ、すべての JVM 検証機能を有効にします。

/usr/sbin/dtrace -n ’hotspot1234:::gc-begin’

プロセス 1234 を開始するためのガベージコレクション時に起動する検証機能だけを有効にします。


注 –

DTrace はシステム処理を増やすため、この機能はシステムパフォーマンスに影響します。この影響はごくわずかですが、負荷のかかる有効化で大量の検証機能を有効にすると大きくなります。

DTrace のパフォーマンスへの影響を最小限に抑える手順については、『Solaris Dynamic Tracing Guide』の「Performance Considerations」の章に記載されています。

DTrace の詳細は、/usr/demo/dtrace および man dtrace を参照してください。


JMX の使用

Identity Manager を使用すると、Java Management Extensions (JMXTM) を使用して、所定のリソースアダプタの操作における操作上の統計を取り込み表示することができます。このデータは、システム状態とレポートを監視するなど、診断と予測に使用できます。

この統計データには、次の情報が含まれています。

オブジェクト 

監視対象となった動作 

アカウントの場合 

  • Create

  • Update

  • Delete

  • Get

  • Authenticate

動作の場合 

Run 

その他オブジェクトの場合 

  • Create

  • Update

  • Delete

  • Get

  • List

JMX は、サーバー別のリソースアダプタごとに MBeans を作成して、これらの Beans を次のパターンに一致する名前で登録します。


serverName=server name, resourceAdapterType=Resource Adapter Type,
resourceAdapterName=Resource Adapter Name

Identity Manager は、正常に完了したかエラーで完了したか、完了した処理のすべてに統計を記録します。ただし Identity Manager は、例外を投げる処理など未完成の処理の統計は記録しません。

excludes の設定方法は、次のとおりです。

  1. 管理者インタフェースから、「設定」->「サーバー」の順に選択します。

  2. 「サーバーの設定」ページで、次のいずれかのタスクを実行します。

    • サーバーのデフォルト設定を編集するには、「サーバーのデフォルト設定の編集」ボタンをクリックします。

    • サーバーのポリシーを編集するには、そのサーバーのリンクをクリックします。

  3. リソース監視を有効にするには、「JMX」タブをクリックして「JMX リソースアダプタモニターの有効化」ボックスを有効にします。

    • 特定のリソースを除外するには、「JJMX リソースアダプタモニターの対象外」リストに正規表現を追加します。

    • 特定動作の監視を除外するには、「JMX リソースアダプタモニター操作の対象外」リストに正規表現を追加します。

どの excludes も、正規表現を使用します。特定リソースを除外した場合、JMX はリソース名だけで照合します。たとえば次の名前のアダプタがある場合は、


resource1
resource2
resource3
resource10
resource11

次のパターンを指定します。


.*1$

つまり、何かが 1 (1$) で終わるまで、0 以上の任意の文字 (.*) にマッチします。JMX は、resource1resource11 を除外します。

処理の場合も、手順は同様です。処理に次の名前が付いている場合は、パターンがこの名前に一致する必要があります。


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 パブリッシャータイプ」を参照してください。


JConsole の使用

Java Monitoring and Management Console (JConsole) は、Java Management Extension (JMX) テクノロジ対応のグラフィカル管理ツールで、JDK 5 以降に同梱されています。JConsole は実行中の JVM に接続し、接続している JMX エージェントの JVM MBeans から情報を収集します。

具体的に JConsole で実行できるタスクは、次のとおりです。


注 –

JConsole を使用した Java プラットフォーム上のアプリケーション監視の詳細は、「JConsole を使用したアプリケーション監視」という Sun Developer Network (SDN) 記事を参照してください。次の URL から入手できます。

http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html


Identity Manager には、次の点に関する情報を提供する JMX MBeans がいくつか搭載されています。

JRat の使用

潜在的なパフォーマンスボトルネックを見つけるには、Java プラットフォーム用オープンソースのパフォーマンスプロファイラである Java Runtime Analysis Toolkit (JRat) を使用します。使用中の配備でカスタム Java クラスを使用する場合は特に使用します。JRat は、使用中のアプリケーションの実行を監視し、アプリケーションのパフォーマンスの測定を維持します。

たとえば、プロビジョニングにカスタムワークフローがある場合にこの JRat を使用すると、呼び出されているクラスを表示したり、デフォルトの Identity Manager プロビジョニングワークフローと比較したワークフローの実行に掛かる時間を表示できます。

JRat の詳細は、http://jrat.sourceforge.net を参照してください。