Oracle® Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド 11g リリース2(11.1.2.1.0) B71702-02 |
|
前 |
次 |
この章では、Oracle Virtual Directoryのチューニングのヒントを示します。内容は次のとおりです。
Oracle Virtual DirectoryはLDAPバージョン3対応のサービスです。これを使用すると、1つ以上の企業データ・ソースを抽象化したビューが得られます。Oracle Virtual Directoryでは、複数のデータ・ソースが単一のディレクトリ・ビューに一体化されます。そのため、LDAP対応のアプリケーションを様々なディレクトリ・サーバー・データ・ストアと統合できます。
この章の内容は、読者が『Oracle Fusion Middleware Oracle Virtual Directory管理者ガイド』の概念および管理についての情報に目を通しているものと想定して書かれています。
注意: Oracle Virtual Directoryのデフォルト構成は、多くの本番用デプロイメントおよびテスト用デプロイメントにとって最適なものではありません。最適なパフォーマンスおよび可用性を得るために、「チューニングに関する基本的な考慮事項」に示す推奨事項を実施することをお薦めします。 |
この項のチューニングの考慮事項は、ほとんどのデプロイメントおよび使用状況に当てはまります。各構成を検討し、各自のユースケース・シナリオに適したものを実装することを強くお薦めします。チューニングの内容は、表24-1にまとめてあります。
表24-1 チューニングに関する基本的な考慮事項
構成属性 | カテゴリ | デフォルト値 | 推奨値 | 注意 |
---|---|---|---|---|
スレッド |
リスナー・プロパティ |
10 |
10 * Oracle Virtual Directoryサーバーが使用できる中央処理装置(CPU)の数 |
推奨値が当てはまるのは、アクティブなLDAPリスナーのみです。 詳細は、「ワーカー・スレッドのチューニング」を参照してください。 |
ワーク・キューの容量 |
リスナー・プロパティ |
2048 |
予想される最大同時クライアント数 * 2 |
2048の操作が同時に実行されます。一部のクライアントで非同期操作を送信する場合もあります。 詳細は、「ワーク・キューの容量のチューニング」を参照してください。 |
最大の初期プール接続 |
LDAPアダプタ・プロパティ |
10 |
このアダプタを使用するすべてのアクティブ・リスナーのThreadsパラメータの値の合計 |
バックエンドのディレクトリ・サーバーが、ここに指定した数の接続を処理できることを確認してください。 詳細は、「LDAP接続プールのチューニング」を参照してください。 |
最大ヒープ・サイズ |
システム・プロパティ |
256MB |
32ビットのシステムでは最大2GB、64ビットのシステムではそれ以上の値を指定できます。 |
値を大きくすると、メモリー不足エラーの発生を防ぐことができます。構成した値を処理するのに十分なRAMがシステムにあることを確認してください。 詳細は、「ヒープ・サイズのチューニング」を参照してください。 |
opmn.xmlファイルのping間隔を60秒(必要な場合はそれ以上)に増やすことを検討してください。
システムがビジー状態の場合、Oracle Process Manager and Notification Server(OPMN)からOracle Virtual Directoryへのpingに失敗する可能性があります。その結果、OPMNが20秒後(デフォルトのping間隔)にOracle Virtual Directoryを再起動します。この問題を回避するには、ping間隔を60秒以上に増やすことを検討してください。
次に示すように、$ORACLE_INSTANCE/config/OPMN/opmn/opmn.xml
でping間隔を変更できます。
<process-type id="OVD" module-id="OVD">
<module-data>
<category id="start-options">
<data id="java-bin" value="$ORACLE_HOME/jdk/bin/java"/>
<data id="java-options" value="-server -Xms2056m -Xmx2056m -Dvde.soTimeoutBackend=0 -DdisableECID=1 -Didm.oracle.home=$ORACLE_HOME -Dcommon.components.home=$ORACLE_HOME/../oracle_common -Doracle.security.jps.config=$ORACLE_INSTANCE/config/JPS/jps-config-jse.xml"/>
<data id="java-classpath" value="$ORACLE_HOME/ovd/jlib/vde.jar$:$ORACLE_HOME/jdbc/lib/ojdbc6.jar"/>
</category>
</module-data>
<stop timeout="120"/>
<ping interval="60"/>
</process-type>
Oracle Virtual Directory Serverがシステムで使用できる中央処理装置(CPU)の数に基づいて、ワーカー・スレッドの数をチューニングします。
Oracle Virtual Directoryリスナー設定のThreads構成パラメータを適切な値に設定してください。管理ゲートウェイ・リスナーおよびDSMLゲートウェイ・リスナーの場合、Threadsのデフォルト値を変更する必要はありません。LDAPリスナーのThreadsの値は通常、チューニングする必要があります。これは、LDAPリスナーがアプリケーションからの同時トラフィックを受け入れるためです。一般的な構成は、1 CPU当たり10スレッドです。たとえば、システムに中央処理装置が4つある場合、スレッドの数は40になります。
詳細は、『Oracle Fusion Middleware Oracle Virtual Directory管理者ガイド』のリスナーの管理に関する項を参照してください。
特定のLDAPリスナーに対して予想される同時クライアントの最大数に基づいて、ワーク・キューの容量をチューニングします。
Oracle Virtual Directoryリスナー設定のWorkQueueCapacity構成パラメータを適切な値に設定してください。そうすることで、LDAPクライアントからの接続リクエストがワーク・キューの容量不足で拒否されることはなくなります。作業用の要素はオンデマンドでのみ割り当てられるため、実際の見積りより大きい値を使用できます。
Fusion Middleware Controlパフォーマンス・モニターには、最大接続数を含む履歴レポートが表示されます。このレポートを使用して、本番データに基づいた接続値の調整方法を決定します。
Oracle Virtual Directoryで多くの同時クライアントをサポートする必要がある場合、ulimitの「ファイルなし」(記述子)パラメータを予想されるLDAPクライアントの数に設定します。たとえば、OPMNが起動するコマンド・ウィンドウでは、8000の同時クライアントが予想される場合に次のulimit
を設定します。
ulimit -n 8192
この変更を有効にするには、OPMNおよびOracle Virtual Directoryを再起動する必要があります。
詳細は、『Oracle Fusion Middleware Oracle Virtual Directory管理者ガイド』のリスナーの管理に関する項を参照してください。
Oracle Virtual Directory LDAPアダプタのLDAP接続プールのサイズをチューニングし、LDAPアダプタを使用するアクティブなOracle Virtual Directoryリスナーに構成されているスレッドの総数以上になるようにします。
こうすれば、リクエストを処理するのに十分なLDAP接続をワーカー・スレッドに持たせることができます。アクティブなアダプタおよびリスナーの実際の数、ならびにトラフィックのパターンは、接続の使用状況を左右します。ただし、LDAPアダプタ接続プール内のアイドル接続は定期的にクローズされるため、大きな値を指定してもパフォーマンスに影響が出ることはありません。バックエンドのディレクトリ・サーバーが、Oracle Virtual Directory LDAPアダプタ接続プールの同時接続数を処理できるよう構成されていることを確認してください。
詳細は、『Oracle Fusion Middleware Oracle Virtual Directory管理者ガイド』のLDAPアダプタの構成に関する項を参照してください。
Oracle Virtual Directoryを実行しているJVMの最大Javaヒープ・サイズをチューニングします。これは、同時負荷を処理するのに十分なヒープをOracle Virtual Directoryに持たせるために行います。
詳細は、『Oracle Fusion Middleware Oracle Virtual Directory管理者ガイド』のOracle Virtual Directoryサーバーに割り当てられた最大ヒープ・サイズの制御に関する項を参照してください。
Oracle Virtual Directoryデプロイメントのユースケース・シナリオによっては、次のチューニング構成を行うとパフォーマンスが向上することがあります。
データベース・アダプタは、あらゆる機能を備えたLDAPからJDBCへのゲートウェイで、すべてのLDAP操作(add、bind、delete、baseSearch、modify、wildCardSearch)を、プリコンパイルされた同等のSQL文コードに変換するトランスレーションをサポートしています。データベース・アダプタは、JDBCクラス・ライブラリを使用して、LDAP検索を実行するためのデータベース接続を形成します。一般に、データベース・ライブラリはデータベース・ベンダーから提供されます。
注意: パフォーマンスを改善するため、データベース・アダプタを使用する前にデータベースをチューニングします。詳細は、データベースのドキュメントを参照してください。使用しているデータベースがOracleデータベースの場合は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。 |
最適なパフォーマンスを得るために、Oracle Virtual Directoryデータベース・アダプタの構成対象となるデータベース・スキーマについて、次の構成オプションを検討してください。
一般に、マップされたLDAP属性をLDAP検索フィルタで使用する場合は、基礎となるデータベース・スキーマのマップされた列に索引を定義します。
LDAP検索フィルタで使用するLDAP属性に、caseIgnoreMatchの一致するルールがある場合、参照のパフォーマンスを最適化するには、この属性にマップされたデータベース表の列にファンクション索引を定義する必要があります。
たとえば、LDAP属性CNがデータベース・スキーマ列EMP.NAMEにマップされている場合、CN属性を含むLDAP検索フィルタのパフォーマンスを最適化するには、UPPER(EMP.NAME)にファンクション索引が必要です。
ファンクションベースの索引の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』のパフォーマンスを考慮したファンクション索引の使用方法に関する項を参照してください。
表24-2に、その他のデータベース・アダプタ設定を示します。
表24-2 データベース・アダプタ設定
パラメータ | 値 | 注意 |
---|---|---|
アダプタ |
デフォルト: アクティブ |
アダプタは、アクティブまたは非アクティブとして構成できます。サーバーの再起動中またはサーバーの起動時に非アクティブなアダプタを起動することはできません。「非アクティブ」設定の目的は、古い構成設定を構成から削除せずに使用可能な状態(スタンバイ状態)にしておくことです。 |
最大接続数 |
デフォルト: 10接続 |
このプロパティでは、データベース・アダプタがデータベースとの間に作成できる接続の最大数を定義します。 |
データベース接続タイムアウト |
デフォルト: 10秒 |
アダプタのデータベース接続タイムアウト・プロパティは、最大接続数の制限に達した後、キャッシュ内で接続が使用可能になるのを待つLDAPリクエストを制御します。 定義した秒数以内に接続が使用可能にならなければ、LDAPリクエストは失敗します。データベース接続タイムアウト・システム・プロパティを使用しない場合、LDAPリクエストは接続が使用可能になるのを10秒間待ちます。 |
結合アダプタを使用する場合は、適切なソースのみを結合します。たとえば、プライマリ・ソースのcn=usersブランチにある属性のみをリンクする必要がある場合、このブランチのみを公開するプライマリ・アダプタを作成します。次に、そのアダプタを使用した結合ルールを作成します。こうすることで、対応するリンク先エントリが存在しない可能性のあるエントリの結合を試みる必要性が減ります。
ヒント: 結合ルールで使用する属性が正しく索引付けされていることを必ず確認してください。 |
既知のクライアント検索フィルタが特定のアダプタに該当しない場合、そのフィルタをすべての適用可能な対象外フィルタに適用すると、パフォーマンスが向上するとともに、ネットワーク・トラフィックが減少します。
ロード・バランサの中には、LDAPサーバーが稼働しているか停止しているかをそのサーバーに問い合せて判断するものがあります。ロード・バランサがこの機能を使用している場合は、独立したネームスペース(dc=loadbalancerなど)を持つローカル・ストア・アダプタを作成して、ロード・バランサ専用とすることを検討してください。おそらくロード・バランサがパフォーマンスに与える影響は目に見えるほどではありませんが、ロード・バランサを独立したネームスペース内に保持することで、トラブルシューティング時にロード・バランサのKeepAlive
リクエストによって大きなログ・ファイルが作成されるのを防ぎやすくなります。
Cacheプラグインは、Oracle Virtual Directoryにメモリー内キャッシュを提供します。あらゆるソースからの問合せ結果をキャッシュして、LDAPクライアントが再利用できるようにする機能を持ちます。このプラグインを使用すると、問合せが何度も繰り返されるアプリケーションのパフォーマンスを改善できます。
キャッシュの操作および構成を確認するには、VEロギング・レベルを「ダンプ」に設定して詳細を参照します。キャッシュは通常のプラグインであるため、Oracle Virtual Directory内の任意の場所で実行するように構成できます。グローバルに実行することも、単一アダプタのコンテキスト内で実行することも可能です。また、標準のプラグイン構成に用意されているネームスペース・フィルタ処理を使用して、キャッシュを特定のネームスペースに制限することもできます。
キャッシュは、問合せ結果を格納して、後で使用できるようにする機能を持ちます。問合せが同じユーザーによって繰り返され、同一の属性または属性のサブセットがリクエストされる場合、Oracle Virtual Directoryがソースから情報を取得するのではなく、キャッシュから問合せの結果が返されます。キャッシュ・ヒットをユーザー間で共有するようプラグインを構成することもできます。
パス資格証明がバックエンド・ソースに渡されず、Oracle Virtual Directoryのみによってセキュリティが実施されている場合以外は、ユーザー間でキャッシュ・エントリを共有しないでください。ユーザー間でキャッシュ・ヒットを共有する場合は、より強力な権限を持つユーザーのキャッシュ結果に他のユーザーがアクセスして、見てはならない情報を目にしてしまう可能性もあるため、十分に注意する必要があります。
このプラグインは、キャッシュを定期的に確認し、期限切れの結果や以前の変更トランザクションで無効にされたエントリがないかどうかチェックします。キャッシュの割当て制限を超えた場合は、使用頻度が最も低い(LRU)問合せをパージしてメモリーのサイズを小さくします。
表24-3に、メモリー管理プラグインのチューニングに使用するパラメータを示します。
表24-3 メモリー管理プラグインの設定
パラメータ | 値 | 注意 |
---|---|---|
Size |
デフォルト: 1000エントリ |
一度にキャッシュ可能なエントリの最大数。 |
MaxResultSize |
デフォルト: 1000エントリ |
特定の問合せに対してキャッシュ可能なエントリの最大数。 |
Trimsize |
デフォルト: 1000エントリ |
最大キャッシュ・サイズを超えたときに、キャッシュ・マネージャがその時点のエントリ数から減らす量。注意: 必要に応じて、まず期限切れの問合せをパージし、次に使用頻度の最も低い問合せから順にパージすることで、切り捨てが実行されます。 |
MaximumAge |
デフォルト: 600秒 |
キャッシュに格納される問合せ/エントリの最大有効期間(秒)。 |
MaintenanceInterval |
デフォルト: 60秒 |
キャッシュ・マネージャが期限切れの問合せの有無をチェックする間隔(秒)。 |
BySubject |
デフォルト: 1(共有しない) |
キャッシュ結果をサブジェクト間で共有するかどうかを示すフラグ(1または0)。値1は、結果をサブジェクト間で共有しないことを示します。 |
表24-4に、LDAPリスナーのチューニングに使用するパラメータを示します。
表24-4 リスナー・パラメータ
パラメータ | 値 | 注意 |
---|---|---|
バックログ |
デフォルト: 128リクエスト |
サーバーが新規接続の試行を拒否し始めるまでキューにためることのできる、保留中の接続リクエストの最大数を指定します。 ほとんどの場合、デフォルト値で十分です。この値の変更が必要になることはほとんどありません。 |
アドレスの再利用 |
デフォルト: False |
このオプションにより、LDAPリスナーがソケット・ディスクリプタを再利用するかどうかを決定します。 有効にすると、Oracle Virtual Directoryサーバーのリスン・ソケットでSO_REUSEADDRソケット・オプションが使用され、TIME_WAIT状態のクライアントのソケット・ディスクリプタを再利用できるようになります。 |
キープ・アライブ |
デフォルト: False |
このオプションにより、LDAP接続でTCPキープ・アライブを使用するかどうかを決定します。 有効にすると、SO_KEEPALIVEソケット・オプションが使用されます。これは、関連付けられた接続がまだ有効であることを確認するためにTCPキープ・アライブ・メッセージが定期的にクライアントに送信されることを示します。 |
TCP遅延なし |
デフォルト: True |
このオプションにより、LDAP接続でTCP遅延なしを使用するかどうかを決定します。 有効にすると、TCP_NODELAYソケット・オプションが使用されます。この場合、クライアントへのレスポンス・メッセージは、追加のレスポンス・メッセージを同一のパケットで送信できるかどうかの判断を待たずに、即座に送信されます。 |
読取りタイムアウト |
デフォルト: 0 |
このオプションにより、指定されたタイムアウト(ミリ秒)でSO_TIMEOUTを有効または無効にします。 このオプションをゼロ以外のタイムアウトに設定すると、Oracle Virtual Directoryサーバーへのクライアント接続は、その時間のみアイドル状態を維持できます。接続のアイドル期間が指定されたタイムアウトを超えると、クライアント接続は終了します。 ゼロのタイムアウトは無限タイムアウトとみなされます。 警告: このオプションは、Oracle Virtual Directoryバージョン10gのvde.soTimeoutFrontendシステム・プロパティに相当します。vde.soTimeoutFrontendシステム・プロパティは11gではサポートされていません。ユーザーは、システム・プロパティに指定した値を変更する必要があります。 10gから11gへの値のマッピングは次のとおりです。「有効」=0 「無効」=ゼロ以外の時間(ミリ秒) |
表24-5に、サーバーのチューニングに使用する基本的なパラメータを示します。
表24-5 サーバー・パラメータ
パラメータ | 値 | 注意 |
---|---|---|
匿名検索制限 |
デフォルト: 1000 |
匿名クライアントに対して返すエントリの最大数。 |
接続タイムアウト |
デフォルト: 120(分) |
「接続タイムアウト」システム・プロパティは、正しく接続をクローズしないクライアントが原因でサービスが停止するのを防ぐために使用します。値は、Oracle Enterprise Managerの「サーバー・プロパティ」ページで設定できます。 警告: 0に設定すると、接続タイムアウトの実施は無効化され、非アクティブの期間に関係なくクライアント接続をクローズできなくなります。このシステム・プロパティは、割当て制限から除外された、または割当て制限を実施できないIPアドレスおよびサブジェクトには適用されません。 |
ロギング・レベル |
デフォルト: Error:1(Severe) |
デフォルトでは、ロギングがNOTIFICATION:1に設定されている場合にのみ、ログ・メッセージがaccess.logファイルに書き込まれます。パフォーマンスを確保するために、デフォルトのログ・レベルをそのまま使用するか、WARNING:1(WARNING)を使用して、access.logファイルに書き込まれる情報の量を制限することを検討してください。 |