この章では、Oracle Unified Directoryサーバー用のJava仮想マシン(JVM)、Javaおよびデータベース・キャッシュの構成や手動チューニングのオプション、およびコマンドライン・ユーティリティについて説明しています。
この章の内容は次のとおりです。
注意: 11g リリース2 (11.1.2.3)以降、Oracle Unified DirectoryではJDK 7またはJRE 7が必要です。 |
dstune
ユーティリティを使用したJVMの構成dstune
コマンドライン・ユーティリティにより、ディレクトリに含まれるデータまたは使用されるシステム・メモリーの量などの基準を使用し、Oracle Unified Directoryサーバーおよびツール(import-ldif
、export-ldif
、rebuild-index
およびverify-index
)のチューニングができます。dstune
ユーティリティには、次のオプションがあります。
data-based
サブコマンドは、データベースがすでに含まれているか、これから含まれるかを示すデータに基づいてサーバーをチューニングします。
mem-based
サブコマンドは、使用するヒープ・サイズに基づいてサーバーおよびツールをチューニングします。
set-runtime-options
サブコマンドを使用すると、システム上のJVMのデフォルト値を使用するか、直接JVMに引数を渡してサーバーおよびツールをチューニングするかを指定できます。
注意: dstune のmemory-based およびdata-based オプションは、Javaプラットフォーム、Standard Edition(Java SE)など、Java HotSpotを使用するJVMを実行している場合にのみ使用可能です。 |
dstune
の構文およびチューニング例などの詳細は、『Oracle Fusion Middleware Oracle Unified Directoryの管理』を参照してください。
この項では、Oracle Unified Directoryサーバー用にJVMおよびJavaオプションを構成する方法、および各コマンドライン・ユーティリティについて説明します。
java.properties
ファイルには、Oracle Unified Directoryのスクリプトおよびサーバー・コマンドで使用されるJavaの構成プロパティが含まれています。このファイルは、UNIXおよびLinuxシステムのinstance-dir
/OUD/config/
、またはWindowsシステムのinstance-dir
\OUD\config\
にあります。
java.properties
ファイルのプロパティには、次の形式があります。
command-name
.java-home=
JVM-path
command-name
.java-args=
JVM-arguments
java.properties
ファイルの構成プロパティを使用する手順:
設定するファイル内のプロパティを編集します。
たとえば、Javaプロパティを設定し、JVMの実行コマンドを-server
モードで実行するか、-client
モードで実行するかを指定できます。
または、特定のコマンド(import-ldif
、export-ldif
、backup
およびrestore
など)では、コマンドがオンライン・モードで実行されるか、またはオフライン・モードで実行されるかに応じて異なるJava引数(および異なるJVM)を指定することもできます。
java.properties
内のプロパティを使用するdsjavaproperties
(またはdsjavaproperties.bat
)コマンドを実行し、Oracle Unified Directoryのスクリプトやコマンドを更新すると、java.properties
に指定された特定のJVMおよびJVM引数が使用されます。
例として、第7.2.3項「特定ユーティリティ用のJava仮想マシンの指定」および第7.2.4項「特定ユーティリティ用のJava引数の指定」を参照してください。
dsjavaproperties
の詳細は、『Oracle Fusion Middleware Oracle Unified Directoryの管理』を参照してください。
表7-1に、java.properties
ファイル内のOracle Unified Directoryに関連するプロパティを示します。
表7-1 java.properties
ファイル内のOracle Unified Directoryに関連するプロパティ
プロパティ | 説明 |
---|---|
|
|
|
特定のユーティリティに対して別のJVMが指定されている場合を除き、ディレクトリ・サーバーおよびそのすべてのコマンドライン・ユーティリティに使用されるJVMが設定されます。 |
表7-2では、サーバーのパフォーマンスに影響を与える可能性があるJavaオプションの概要を示します。これらのオプションの一部は、Oracle JVMにのみ適用されます。
表7-2 Oracle Unified Directory Serverのパフォーマンスに影響を与えるJavaオプション
条件 | オプション | 説明 |
---|---|---|
|
クライアント・アプリケーションの実行時の最適化が選択されます。ディレクトリ・サーバーは起動の時間が長くなりますが、より最適化されスループットが向上します。 |
|
|
64ビット・マシンのみが対象です。デフォルトでは、アーキテクチャに関係なくディレクトリ・サーバーにより32ビットのJVMが選択されます。JVMに4GBを超えるヒープを必要とし、アーキテクチャが64ビットのとき、このオプションを指定してください。 |
|
|
JVMに使用できる初期メモリー・サイズおよび最大メモリー・サイズがそれぞれ選択されます。これらの値はJVMヒープに使用され、ディレクトリ・サーバーとそのデータベース(DB)キャッシュ(単数または複数)のメモリーが予約されます。 使用可能なメモリー量を増やすとパフォーマンスが向上する場合がありますが、増やしすぎると、フル・ガベージ・コレクションを実行するための一時停止時間が長くなるという悪影響が生じる可能性があります。したがって、初期サイズおよび最大サイズは同じ値に設定する必要があります。 一般的なガイドラインとして、Oracle Berkeley Java Edition (JE)データベース・フォルダ( サーバー・ランタイムに許容する追加メモリーには注意してください。たとえば、1GBの単一データベースがあり、それを完全にメモリーに格納する場合、ディレクトリ・サーバーの効率的なパフォーマンスを得るには、データベース・キャッシュ用に60%を予約した2GBのヒープで十分です。 この設定をテストするには、 4GBを超えるJVMヒープには64ビットのJVMが必要です。 |
|
|
外部アプリケーションで負荷のかかるガベージ・コレクションが強制されることを防ぎます。 |
|
|
スループットが遅い環境では、このオプションを使用してJVMの若い世代のサイズを増やすことを検討してください。 デフォルトでは、若い世代はかなり小さく、スループットの高いシナリオでは大量のガベージが生成される可能性があります。今度はこのガベージ・コレクションにより、JVMにおいて一時オブジェクトが誤って古い世代に格納されます。 |
|
サーバーのみ |
|
CMSガベージ・コレクタが選択されます。このガベージ・コレクタは、一時停止時間を短縮するために設定されます。これによりJavaアプリケーションの平均スループットが低下しますが、CPUに負担をかけるガベージ・コレクションの時間が大幅に短縮されます。このオプションは、レスポンス時間に制約がある環境では必須です。 |
|
コレクションが開始されるレベルが選択されます。デフォルト値は68%です。 |
|
オフラインのインポートのみ |
|
古い世代の並列ガベージ・コレクタが選択されます。このガベージ・コレクタは、スループットを上げるために設定されます。これにより、インポートほど重要ではなく、発生頻度の低いstop-the-worldガベージ・コレクションを犠牲にして、 |
|
ガベージ・コレクションの詳細が印刷されます。 |
|
|
デバッグに役立つガベージ・コレクションのタイム・スタンプが印刷されます。 |
|
その他のアプリケーション( |
|
クライアント・アプリケーションの実行時の最適化が選択されます。コンパイルのオーバーヘッドが低下するため、アプリケーションの起動が速くなり、レスポンスが向上します。 |
|
アプリケーションに対して小さい初期JVMヒープ・サイズが選択されます。 |
特定のユーティリティ用にJVMを構成する手順:
java.properties
ファイルで次のプロパティを編集します。
command-name.java-home=jvm-location
たとえば、JDK 1.7固有のオフラインのimport-ldif
コマンドを構成するには、import-ldif.offline
で始まるプロパティを設定します。次に例を示します。
import-ldif.offline.java-home=/usr/java/jdk1.7.0
dsjavaproperties
ユーティリティを実行してプロパティの値を適用します。
特定のユーティリティ用にJava引数を構成する手順:
java.properties
ファイルで次のプロパティを編集します。
command-name.java-args=arguments
たとえば、オンライン・エクスポートに使用する最大ヒープ・サイズを256MBに指定するには、export-ldif.online
で始まるプロパティを設定します。次に例を示します。
export-ldif.online.java-args=-Xms256m -Xmx256m
dsjavaproperties
ユーティリティを実行してプロパティの値を適用します。
ディレクトリ・サーバーの設定スクリプト(oud-setup
またはoud-setup.bat
)の実行時、次のようにランタイムのオプションを指定できます。
GUIモードでは、「実行時オプションを指定中」画面で、「変更」をクリックし、表示される「サーバーの実行時設定」またはオフライン・ツールの実行時設定のいずれかの値を変更します。
第3.1項「グラフィカル・ユーザー・インタフェース(GUI)を使用したディレクトリ・サーバーの設定」を参照してください。
CLIモードでは、Oracle Unified Directoryサーバーおよびオフライン・ツールをチューニングするときにJVM引数を指定できます。
データベース・キャッシュのサイズは、Oracle Unified Directoryサーバーの全体的なパフォーマンスに影響を与えます。使用しているハードウェア、ディレクトリ内のエントリ数やサイズ、およびデプロイメントのパフォーマンス要件に応じて、それ固有のデータベース・キャッシュのメモリー設定が必要です。
たとえば、import-ldif
ユーティリティを使用してデータをインポートするときに発生する可能性のある、データベース・キャッシュの追い出し問題を回避する(または最小化する)ようにディレクトリ・サーバーを構成できます。理想的には、データベース・キャッシュを、データベース全体が確実にキャッシュに収まるような値に設定します。
必要なヒープ・サイズは、エントリ数とそのサイズによって決まります。たとえば、それぞれが10KBの200,000エントリをインポートする場合、JVMのヒープ・サイズに2GBを指定し、ディレクトリ・サーバーのランタイム環境に少なくとも1GBを割り当て、残りをデータベース・キャッシュに割り当てます。
データベース・キャッシュは、dsconfig
コマンドライン・ユーティリティまたはOracle Directory Sever Manager(ODSM)のいずれかを使用し、db-cache-percent
プロパティまたはdb-cache-size
プロパティを構成することで設定できます。
db-cache-percent
プロパティおよびdb-cache-size
プロパティは、サーバーがデータベース・キャッシュに使用できる最大サイズを表します。このいずれかのプロパティで設定されたサイズよりもデータベースが小さい場合、データベースのサイズのみがJVMヒープに割り当てられます。
注意: db-cache-size プロパティはdb-cache-percent プロパティより優先されます(両方に値が指定されている場合)。このため、db-cache-percent プロパティを設定する場合は、db-cache-size プロパティは0MB(デフォルト)に設定する必要があります。 |
dsconfig
を使用してデータベース・キャッシュを設定する手順:
dsconfig
のあるディレクトリに変更します。
UNIXおよびLinuxシステムの場合:
$ cd instance-dir/OUD/bin
Windowsシステムの場合:
C:\> cd instance-dir\OUD\bat
dsconfig
コマンドを実行してdb-cache-percent
プロパティを設定します。次に例を示します。
$ dsconfig set-workflow-element-prop \ --element-name userRoot --set db-cache-percent:50 \ --hostname hostname --port port-number \ -X -D "cn=Directory Manager" -j /tmp/password -n
この例では、db-cache-percent
を50パーセントに設定しています。したがって、2GBのメモリー割当ての場合、1GBのメモリーがディレクトリ・キャッシュに割り当てられ、残りがJVMに割り当てられます。
データベース・キャッシュ・モード(db-cache-mode
プロパティ)は、データベース・キャッシュ内のレコードのキャッシュを制御します。データベース・キャッシュは、Java Edition(JE)のノード(上位、内部およびリーフ・ノード)を格納するために使用されます。レコードが格納または取得されるとき、データベース・キャッシュ・モードにより、キャッシュ内の他のレコードとの相対で、そのレコードがその後キャッシュに保持される期間が決定されます。
デフォルトのデータベース・キャッシュ・モードでは、キャッシュ内のすべてのタイプのノードが保持されます。ほとんどのデプロイメントで、デフォルトのモードが推奨されます。しかし、パフォーマンスが期待どおりではない場合、またはOracle Unified Directoryの実行に使用可能なメモリーではデータベース・キャッシュ内のすべてのエントリを保持できない場合には、モードの変更を検討する余地があります。
考慮すべき他のデータベース・キャッシュ・モードは次のとおりです。
evict-ln
モードは、使用されたリーフ・ノードをデータベース・キャッシュから追い出します。デフォルト・モードでのパフォーマンスが期待どおりではなく、Oracle Unified Directoryに割り当てられたメモリーがデータベースのサイズよりも小さい場合にのみ、このモードを使用します。このモードを使用すると、メモリー不足によるJavaのガベージ・コレクションや処理の経過時間(etime
)の異常値を低減します。
evict-ln
モードは、使用された下位の内部ノードをデータベース・キャッシュから追い出します。このモードを使用する前に、evict-ln
モードを試してみることをお薦めします。Oracle Unified Directoryに割り当てられたメモリーがデータベースのサイズよりもかなり小さく、パフォーマンスが期待どおりではない場合に、ステージング・デプロイメントでのみ、このモードを使用します。
データベース・キャッシュ・モードに指定できるその他の値は、『Oracle Fusion Middleware Oracle Unified Directory構成リファレンス』のDBのローカル・バックエンドのワークフロー要素に関する項を参照してください。
データベース・キャッシュ・モードを設定するには、dsconfig
コマンドライン・ユーティリティを使用します。たとえば、モードをevict-ln
に設定するには次のようにします。
$ dsconfig set-workflow-element-prop \
--element-name userRoot \
--set db-cache-mode:evict-ln \
--hostname localhost --port 4444 \
-X -D "cn=Directory Manager" -j password-file -n
『Oracle Fusion Middleware Oracle Unified Directoryの管理』を参照してください。