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

Identity Manager パフォーマンスのチューニング

Identity Manager のパフォーマンスを最適化するための推奨は、次の領域に分かれています。

一般的なパフォーマンスのチューニング

通常は、次のとおり実行すると Identity Manager のパフォーマンスを最適化できます。

Active Sync アダプタのパフォーマンスのチューニング

同期はバックグラウンドタスクであるため、Active Sync アダプタ設定によってはサーバーのパフォーマンスが影響を受ける可能性があります。

Active Sync アダプタの管理には、「リソース」リストを使用します。Active Sync アダプタを選択し、「リソースアクション」リストの「同期」セクションから処理を制御する実行、停止、ステータス更新を利用してください。

Active Sync アダプタのパフォーマンスを向上するには、次のとおり実行します。

一括ロードのチューニング

一括ロード操作中のパフォーマンスを向上させるには、次のとおり実行します。

設定を変更可能な XML オブジェクト設定のチューニング

設定可能な XML オブジェクトを使用すると、広範囲のユーザーインタフェース仕様が利用でき、タスクごとにユーザーへのデータ表示方法を定義したり、複雑な業務プロセスを自動化したりできるようになります。ただしこの柔軟性は、効率、パフォーマンス、および信頼性に影響を与えることがあります。

ここでは、フォーム、ルール、およびワークフローから構成される、Identity Manager の設定可能な XML オブジェクトをチューニングする際のガイドラインをいくつか説明します。これらの情報は、次のように構成されています。

フォームのチューニング

実行中タスクのビューや変数コンテキストと相互に作用するインタフェースを定義するには、Identity Manager のフォームを使用します。フォームには、データ要素のセットにビジネスロジックと変換ロジックに使用する実行コンテキストがあります。各種タスクを実行する非常に強力で動的なフォームを作成できるとはいえ、フォームの複雑さを抑えれば効率が上がります。

次に、カスタマイズしたフォームのパフォーマンスを向上させる方法をいくつか説明します。

新しいフォームの最適化

Identity Manager の新しいフォームを設計する際、システムインテグレーターは次の手順に従えばフォームのパフォーマンスを最適化できます。

管理者フォームの最適化

管理者フォームのパフォーマンスを向上させるには、次の項目を実行します。

エンドユーザーフォームの最適化

エンドユーザーフォームのパフォーマンスを向上させるには、次の項目を実行します。

フォームフィールド内の式の最適化

フォームで実行される動作の中には、Identity Manager 外部のリソースを呼び出すものがあります。特にグループリストや電子メール配信リストのコンパイルなど、結果の値が長いリストになるような外部リソースへのアクセスは、Identity Manager のパフォーマンスに影響を与えることがあります。

このような呼び出し中のパフォーマンスを向上させるには、『Sun Identity Manager Deployment Reference』の「Java クラスを使用したフィールドデータの取得」のガイドラインに従ってください。

また、<Disable> 式のようなパフォーマンスに影響を受けやすい式で JavaScriptTM を使用するのは避けてください。組み込まれたトレース機能を使用する場合は、短い XPRESS 式の方がデバッグしやすいです。ワークフローアクションの複雑なロジックには JavaScript を使用します。

フォームの表示速度が低下した場合、debug/Show_Timings.jsp ページで問題を見つけ出すことができます。Formconvert.convertField() への呼び出しを探してください。これで、フィールドごとにその値の計算にどれくらい時間が掛かっているかがわかります。

ルールのチューニング

Identity Manager ルールを使用して、本製品の中でフォームやワークフローなど設定可能なコンポーネントで再利用できる定数と XPRESS ロジックをカプセル化します。

ルールを記述する際は、最適なパフォーマンスを得られるよう、必要に応じて次のガイドラインを使用してください。

ワークフローのチューニング

さまざまな人的および電子的タッチポイントを使用した複雑な業務処理を、使いやすく自動化できるように Identity Manager のワークフローをカスタマイズします。

カスタムのワークフローのパフォーマンスを向上させるには、次の方法に従ってください。

WorkItems (ManualActions ) のチューニング

WorkItems (ワークフロー内では ManualActions と表示されています) の数とサイズによって、メモリーとシステムパフォーマンスが著しく影響を受けることがあります。デフォルトでは、WorkItem に Identity Manager が全体ワークフローのコンテキストをコピーしてから、送信後にこのワークフローコンテキストを書き戻します。

WorkItemsManualActions のパフォーマンスを向上させるには、次の手順に従ってください。

データベース統計のチューニング

データベース管理者の場合、頻繁に統計を実行してリポジトリデータベースを監視しているはずです。

パフォーマンス問題は、データベーステーブルの統計が悪いか抜けている場合によく起こります。この問題を解決すれば、データベースと Identity Manager パフォーマンスの両方のパフォーマンスが向上します。

詳細は、次の Oracle 記事を参照してください。

最適なクエリー計画を選択するもう一つの方法として、SQL プロファイルを使用するようにします。パフォーマンスの悪い SQL を特定する際には、Enterprise Manager から SQL Advisor を使用してこれらのプロファイルを作成します。

データエクスポータのチューニング

データエクスポータを使用すると、Identity Manager の新規データ、変更データまたは削除データを、レポート作成と解析作業に適した外部のリポジトリにエクスポートできるようになります。実際のエクスポートデータはバッチで行われます。ここで、エクスポート対象となる各種データが独自のエクスポート周期を指定できます。Identity Manager リポジトリに付属しているエクスポート対象のデータと、エクスポート周期の長さと変更されるデータ量にもよりますが、エクスポートされるデータ量は大きくなりがちです。

Identity Manager のデータ型の中には、後からエクスポートできるように、特殊なテーブルのキューに入れられるものがあります。具体的に言うと、WorkflowActivityResourceAccount データがキューに入れられます。こうしないとこのデータが持続しないためです。型に加えられたすべての変更点をウェアハウスで監視する必要があったり、TaskInstanceWorkItem データなど、エクスポート周期に対応しないライフサイクルの型があると、どの持続性のデータ型でもキューに入れられることもあります。

パフォーマンスを最大限に高めるには、ウェアハウスで必要なデータ型だけをキューに入れてエクスポートしてください。データエクスポートはデフォルトで無効になっていますが、データエクスポートを有効にすると、すべてのデータ型がエクスポートされます。不要なデータ型はすべて無効にしてください。

エクスポートタスクがデータをエクスポートする際、このタスクは複数スレッドを使用して、できる限り多くのスループットを達成するためにエクスポートを一刻も早く完了しようとします。Identity Manager リポジトリとウェアハウスの入出力速度にもよりますが、export タスクが Identity Manager サーバーのプロセッサを完全に占有し、これが対話式パフォーマンスが低下する原因になります。できればエクスポートは、エクスポートタスクに専用のマシンで実行するか、少なくともそのマシンに対話式処理がない期間に実行するようにします。

エクスポートタスクでサポートしているチューニングパラメータは、次のとおりです。

排出スレッドカウントは、最も需要なスループットです。キューテーブルに多数のレコードがある場合、(最大 24 まで) スレッド数を増せばスループットが高まるようになります。ただし、そのキューがある種のレコードに占有されていると、実際に高速化できる排出スレッドは少なくなります。エクスポートタスクは、割り当てできるスレッドのセット数までキューテーブルの中身を分けて、それぞれのスレッドに排出対象のセットを入れようとします。これらのスレッドには、ほかのリポジトリテーブルを排出している排出スレッドも含まれます。

一般的な XML のチューニング

静的な XMLObject 宣言を可能な限り使用すれば、一般的な XML を最適化できることがよくあります。たとえば、以下を使用します。

また、コンテキストにもよりますが、<o></o> 要素の代わりにラップオブジェクトを使用するようにします。

Identity Manager Service Provider のチューニング

Identity Manager の計器盤グラフを使用すると、SunTM Identity Manager サービスプロバイダ (サービスプロバイダ) の現在のシステムを評価し、異常を見つけ、これまでの傾向を理解することができます (時間枠内の並列ユーザーやリソースの動作など)。


注 –

サービスプロバイダ には、管理者インタフェースがありません。Identity Manager の管理者インタフェースから、管理者タスクのほぼすべてを実行してください (計器盤グラフなど)。


サービスプロバイダ のチューニングの詳細は、『Sun Identity Manager Service Provider 8.1 Deployment』を参照してください。

Identity Manager Web インタフェースのチューニング

Identity Manager の Web インタフェースを使用している場合は、Identity Manager に同梱されている OpenSPML ツールキットでパフォーマンスを最適化できます。


注 –

openspml.jar ファイルを http://openspml.org/ の Web サイトから使用すると、メモリーリークが起こります。


初期ロードのチューニング

    大きな初期ユーザーのロード中にパフォーマンスを向上させるには、次の項目を実行します。

  1. Identity Manager の管理者インタフェースから、すべての監査イベントを無効にします。


    注 –

    監査ロギングを使用すると操作ごとに複数のレコードが追加され、それ以降の監査レポートの実行速度が低下することがあります。


    1. 「設定」->「監査」の順に選択します。

    2. 「監査の設定」ページで、「監査を有効にする」ボックスの選択を解除して「保存」をクリックします。

  2. Web サーバをシャットダウンしてリストキャッシュを無効にするか、(debug/Show_WSProp.jsp デバッグページにある) ChangeNotifier.updateSearchIntervalCount プロパティーを 0.. に変更して、リストキャッシュを無効にします。

    リストキャッシュには、メモリー内で頻繁にアクセスされる組織内のユーザーリストが保持されています。これらのリストを保持するため、リストキャッシュは新規作成されたユーザーを探して確認します。

  3. debug/ Clear_List_Cache.jsp ページにある最新のリストキャッシュを消去します。

  4. ユーザーの処理に使用されるワークフローに、承認が記載されていないことを確認します。

  5. 次のように、代替となるロード方法を使用します。

    • ロードを分割し、そのデータをゾーンで実行する。

    • より高速な一括ロードを使用する。

    • ファイルからロードを行う。

  6. WorkflowActivity 型のデータエクスポータを無効にします。

必要メモリーのチューニング

Java コマンドラインへの最大ヒープサイズと最小ヒープサイズを追加して、必要メモリーを定め、アプリケーションサーバーの JVM に値を設定します。たとえば、次のようにします。

java -Xmx512M -Xms512M

パフォーマンスを向上させるには、次の項目を実行します。


注 –

max.post.memory.size は、ディスクへスプールせずに (たとえば HTML FileSelect コントロールで) 送信されたファイルに含まれている最大バイト数を指定します。一時ファイルへの書き込み権がない場合は、max.post.memory.size を増やして、ディスクへスプールしないようにします。デフォルト値は 8K バイトです。

システム要件の詳細は、『Sun Identity Manager 8.1 リリースノート』を参照してください。


オペレーティングシステムのカーネルのチューニング

SolarisTM と Linux オペレーティングシステムのカーネルのチューニングの詳細は、『Sun Java System Application Server Enterprise Edition Performance Tuning Guide』の「Tuning the Operating System」の章を参照してください。

Oracle オペレーティングシステムのカーネルのチューニングについては、Oracle システムに付属の製品マニュアルを参照してください。

プロビジョニングツールのチューニング

ビューのプロビジョニングを処理する際のパフォーマンス問題は、ネットワーク遅延に原因があることがよくあります。個々のリソースアダプタをトレースすれば、何がパフォーマンス問題の原因になっているかがわかりやすくなります。

プロビジョニングツールのパフォーマンスを向上させるには、次の項目を実行します。

調整のチューニング

調整サーバーとは、調整を行う Identity Manager のコンポーネントです。ここでは、以下を初めとする調整サーバーのパフォーマンスを向上させるための推奨方法を説明します。

調整のチューニングで用いる一般的な推奨事項

通常は、次のとおり実行すると調整サーバーのパフォーマンスを最適化できます。

調整サーバーの設定のチューニング

デフォルト設定で適切な場合が多いですが、「サーバー設定の編集」ページにある次の設定を調節すると、調整サーバーのパフォーマンスを向上できることがあります。

アイドル中は、スレッドに行うべき処理がなく、指定した最小限のスレッド数にまで低下した場合に限り、スレッドが停止します。ロードが増えるに従って、最大スレッド数に達するまで、調整サーバーはさらにスレッドを追加します。調整サーバーは、最小限のスレッド数を下回ったり最大限のスレッド数を上回ることはありません。

通常、スレッドが増えると並列処理も増えます。ただし、多すぎるスレッドによっていつしかマシンに大きすぎる負荷が掛かったり、単に効果が得られなくなることがあります。


注 –

配備はそれぞれ異なるため、汎用的で最適な設定を推奨することはできません。調整サーバーの設定は、配備環境ごとに個別に調整する必要があります。


Procedure調整サーバーの設定を変更する

調整サーバーの設定を変更するには、次の項目を実行します。

  1. 管理者インタフェースにログインします。

  2. 「設定」->「サーバー」->「調整サーバー」タブの順にクリックします。

  3. 「サーバー設定の編集」ページが表示されたら、必要に応じて設定を調整します。

    詳細は、「サーバーのデフォルト設定の編集」を参照してください。

複数リソースに用いる調整のチューニング

Identity Manager で複数リソースに調整を設定する場合は、いくつかオプションがあります。

配備はそれぞれ異なるため、この設定には最適な解決策がありません。配備に合った解決策を見つけるには、これらのオプションを組み合わせて調整する必要があります。

この機能の業務目的を基に使用量アンケートを作成すると、進め方が決定しやすくなるかもしれません。

次の問題に取り組みます。

また、調整サーバーは、Web トラフィックを処理するプールに含める必要はありません。このサーバーはとトランザクション処理専用にあるため、決して直接対話しないようなサーバーを追加してください。トランザクション処理専用のサーバーを用意すると、大規模システムには一番上のオプションが最適かもしれません。

リソースクエリのチューニング


注 –

ビューをプロビジョニングする際のパフォーマンス問題は、ネットワーク遅延に原因があることがよくあります。個々のリソースアダプタをトレースすれば、何がパフォーマンス問題の原因になっているかがわかりやすくなります。


クエリーを実装する際に FormUtil.getResourceObjects を使用すると、リソースクエリーのパフォーマンスを向上させることができます。

クエリー結果のキャッシュに、次のうちいずれかの方法を用います。


注 –

スケジューラのチューニング

スケジューラコンポーネントは、Identity Manager のタスクのスケジュール作成を管理します。

ここでは、以下を初めとするスケジューラのパフォーマンスを向上させるための推奨方法を説明します。

スケジューラをチューニングするための一般的な推奨事項

次の TaskDefinition オプションによって、タスク完了後のスケジューラによるタスクの処理の仕方が決まります。

これらのデフォルト設定は、完了したスケジューラのタスクの有効期間を短縮することでメモリーを最適化できるようにするためのものです。これらの設定を変更せざるをえない事情がない限り、デフォルトのままにしておいてください。

正常に完了したタスクを即時削除するとはいえ、デバッグできるまでエラーを含むタスクを残しておくには、次を実行することもできます。

スケジューラサーバーの設定のチューニング

「サーバー設定の編集」ページで次の設定を調整すると、スケジューラのパフォーマンスを向上できることがあります。


注 –

配備はそれぞれ異なるため、汎用的で最適な設定を推奨することはできません。スケジューラの設定は、配備環境ごとに個別に調整する必要があります。


Procedureスケジューラサーバーの設定を変更する

  1. 管理者インタフェースにログインします。

  2. 「設定」->「サーバー」->「スケジューラ」タブの順にクリックします。

  3. 「サーバー設定の編集」ページが表示されたら、必要に応じて設定を調整します。

    詳細は、「サーバーのデフォルト設定の編集」を参照してください。

セッションのチューニング

Identity Manager は、認証済みセッションで認証されたユーザーが使用できる最長時間未使用の (LRU) キャッシュを保持します。既存の認証済みセッションを使用すると、セッションを必要とするオブジェクトとアクションに対してリポジトリアクセスの速度をアップすることができます。

認証プールサイズを最適化するには、Waveset.properties ファイルの session.userPoolSize 値を、そのサーバーで見込まれる並列ユーザーセッションの最大数に変更します。

Sun Identity Manager Gateway のチューニング

Sun Identity Manager Gateway は、接続ごとにスレッドを生成して、リソース種類、ゲートウェイホスト、およびゲートウェイポートの一意の組み合わせごとに異なるプールを使用します。ゲートウェイは、5 分ごとにアイドル中の接続がないかチェックします。60 分間アイドル中の接続が合った場合、ゲートウェイはその接続を閉じてプールから削除します。

ゲートウェイは要求を受け取ると、次の操作を行います。

そのリソースの最大接続数を設定してください。また、その種類のすべてのリソースに対し、そのゲートウェイを使用しているのと同じ方法でこの接続を設定してください。このリソース種類では、所定のホストでゲートウェイに行った最初の接続とポートが、そのリソースの最大接続数を使用します。


注 –

そのリソースの最大接続数を変更する場合は、サーバーを再起動して変更内容を反映してください。


次の例は、接続、要求、およびゲートウェイスレッドの関係を示したものです。

Active Directory リソースで最大接続数を 10 に設定し、2 台の Identity Manager サーバーを使用している場合は、その Active Directory リソースのゲートウェイに最大 20 までの同時接続を設定できます (Identity Manager サーバーごとに 10)。このゲートウェイは、各サーバーから送信された 10 の同時要求を受け付けることができ、各要求を別々のスレッドで処理します。同時要求数がゲートウェイの最大接続数を超えた場合、それ以上の要求はゲートウェイが要求を完了して接続をプールに戻すまで、キューの中に入れられます。


注 –

ゲートウェイコードはマルチスレッドですが、この特性はゲートウェイで使用中の API やサービスに対応しません。Active Directory には、ゲートウェイは Microsoft から提供されている ADSI インタフェースを使用します。このインタフェースがゲートウェイの要求を並列に処理するかどうかを判断する調査は一切行われていません。


このほか、ゲートウェイのパフォーマンスを向上させる方法には、次のようなものがあります。

タスクバーのチューニング

管理者インタフェースのタスクバーには、すでに実行したプロビジョニングタスクのリンクが表示されます。このため、多数のタスクがあると、インタフェースの速度が低下します。

インタフェースのパフォーマンスを向上させるには、<List>...</List> 要素を UserUIConfig オブジェクトから削除して、taskResults.jsp リンクを各 JSP から削除します。

次の例に、<TaskBarPages> 内の <List>...</List> エントリを示します。


例 4–1 UserUIConfig オブジェクトの修正


<TaskBarPages>
  <List>
    <String>account/list.jsp</String>
    <String>account/find.jsp</String>
    <String>account/dofindexisting.jsp</String>
    <String>account/resourceReprovision.jsp></String>
    <String>task/newresults.jsp</String>
    <String>home/index.jsp</String>
  </List>
 </TaskBarPages>