7 Oracle Unified Directory用のJVM、Javaおよびデータベース・キャッシュのオプションの構成
Oracle Unified Directoryは、サーバーをチューニングし、Java仮想マシン(JVM)、Javaおよびデータベース・キャッシュ用のさまざまなオプションを構成するための、複数のコマンドライン・ユーティリティを提供します。
内容は次のとおりです。
ノート:
12c (12.2.1.3.0)以降、Oracle Unified DirectoryではJDK 8またはJRE 8が必要です。
7.1 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 Unified Directoryの管理』のdstuneユーティリティを使用したJava仮想マシンの設定のチューニングを参照してください。
7.2 デフォルトのJVMおよびJava引数の構成
Javaプロパティ・ファイルを使用して、Oracle Unified Directoryサーバー用にJava仮想マシン、JavaオプションおよびJava引数を構成します。
7.2.1 Javaプロパティ・ファイルの使用
java.properties
ファイルには、Java構成プロパティが含まれます。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仮想マシンの指定」および「特定ユーティリティ用のJava引数の指定」を参照してください。
『Oracle Unified Directoryの管理』のdsjavapropertiesに関する項も参照してください。
表7-1に、java.properties
ファイル内のOracle Unified Directoryに関連するプロパティを示します。
表7-1 java.properties
ファイル内のOracle Unified Directoryに関連するプロパティ
プロパティ | 説明 |
---|---|
|
|
|
特定のユーティリティに対して別のJVMが指定されている場合を除き、ディレクトリ・サーバーおよびそのすべてのコマンドライン・ユーティリティに使用されるJVMが設定されます。 |
7.2.2 JVMオプションの構成
Oracle Unified Directoryでは、サーバーのパフォーマンスに影響を与えるいくつかのJavaオプションが用意されています。各オプションは特定の条件に適用され、これらのオプションの一部はOracle JVMにのみ適用されます。
表7-2では、サーバーのパフォーマンスに影響を与える可能性があるJavaオプションの概要を示します。
表7-2 Oracle Unified Directoryサーバーのパフォーマンスに影響を与えるJavaオプション
条件 | オプション | 説明 |
---|---|---|
サーバー・グレードのJVMランタイム最適化を使用するサーバーおよびオフラインのインポート |
|
クライアント・アプリケーションの実行時の最適化が選択されます。ディレクトリ・サーバーは起動の時間が長くなりますが、より最適化されスループットが向上します。 |
64ビット・マシンのみが対象です |
|
64ビット・マシンのみが対象です。デフォルトでは、アーキテクチャに関係なくディレクトリ・サーバーにより32ビットのJVMが選択されます。JVMに4GBを超えるヒープを必要とし、アーキテクチャが64ビットのとき、このオプションを指定してください。 |
JVMヒープ |
|
JVMに使用できる初期メモリー・サイズおよび最大メモリー・サイズがそれぞれ選択されます。これらの値はJVMヒープに使用され、ディレクトリ・サーバーとそのデータベース(DB)キャッシュ(単数または複数)のメモリーが予約されます。 使用可能なメモリー量を増やすとパフォーマンスが向上する場合がありますが、増やしすぎると、フル・ガベージ・コレクションを実行するための一時停止時間が長くなるという悪影響が生じる可能性があります。したがって、初期サイズおよび最大サイズは同じ値に設定する必要があります。 一般的なガイドラインとして、Oracle Berkeley Java Edition (JE)データベース・フォルダ( サーバー・ランタイムに許容する追加メモリーには注意してください。たとえば、1GBの単一データベースがあり、それを完全にメモリーに格納する場合、ディレクトリ・サーバーの効率的なパフォーマンスを得るには、データベース・キャッシュ用に60%を予約した2GBのヒープで十分です。 この設定をテストするには、 4GBを超えるJVMヒープには64ビットのJVMが必要です。 |
|
|
外部アプリケーションで負荷のかかるガベージ・コレクションが強制されることを防ぎます。 |
スループットが遅い環境 |
|
スループットが遅い環境では、このオプションを使用してJVMの若い世代のサイズを増やすことを検討してください。 デフォルトでは、若い世代はかなり小さく、スループットの高いシナリオでは大量のガベージが生成される可能性があります。今度はこのガベージ・コレクションにより、JVMにおいて一時オブジェクトが誤って古い世代に格納されます。 |
サーバーのみ |
|
CMSガベージ・コレクタが選択されます。このガベージ・コレクタは、一時停止時間を短縮するために設定されます。これによりJavaアプリケーションの平均スループットが低下しますが、CPUに負担をかけるガベージ・コレクションの時間が大幅に短縮されます。このオプションは、レスポンス時間に制約がある環境では必須です。 |
GC分析およびチューニング |
|
コレクションが開始されるレベルが選択されます。デフォルト値は68%です。 |
オフラインのインポートのみ |
|
古い世代の並列ガベージ・コレクタが選択されます。このガベージ・コレクタは、スループットを上げるために設定されます。これにより、インポートほど重要ではなく、発生頻度の低いstop-the-worldガベージ・コレクションを犠牲にして、 |
GC分析およびチューニング |
|
ガベージ・コレクションの詳細が印刷されます。 |
GC分析およびチューニング |
|
デバッグに役立つガベージ・コレクションのタイム・スタンプが印刷されます。 |
その他のアプリケーション( |
|
クライアント・アプリケーションの実行時の最適化が選択されます。コンパイルのオーバーヘッドが低下するため、アプリケーションの起動が速くなり、レスポンスが向上します。 |
非常に小さい初期JVMヒープ・サイズ |
|
アプリケーションに対して小さい初期JVMヒープ・サイズが選択されます。 |
7.2.3 特定ユーティリティ用のJava仮想マシンの指定
java.properties
ファイルでJavaホームのプロパティを編集して、特定ユーティリティ用のJava仮想マシンを設定します。
特定のユーティリティ用にJVMを構成するには:
7.3 サーバー設定中のJavaランタイム設定の構成
ディレクトリ・サーバーの設定スクリプト(oud-setup
またはoud-setup.bat
)の実行時に、ランタイムのオプションを指定できます。
-
GUIモードでは、「実行時オプションを指定中」画面で、「変更」をクリックし、表示される「サーバーの実行時設定」またはオフライン・ツールの実行時設定のいずれかの値を変更します。
-
CLIモードでは、Oracle Unified Directoryサーバーおよびオフライン・ツールをチューニングするときにJVM引数を指定できます。
7.4 データベース・キャッシュのサイズ
データベース・キャッシュのサイズは、Oracle Unified Directoryサーバーの全体的なパフォーマンスに影響を与えます。使用しているハードウェア、ディレクトリ内のエントリ数やサイズ、およびデプロイメントのパフォーマンス要件に応じて、それ固有のデータベース・キャッシュのメモリー設定が必要です。
たとえば、import-ldif
ユーティリティを使用してデータをインポートするときに発生する可能性のある、データベース・キャッシュの追い出し問題を回避する(または最小化する)ようにディレクトリ・サーバーを構成できます。理想的には、データベース・キャッシュを、データベース全体が確実にキャッシュに収まるような値に設定します。
必要なヒープ・サイズは、エントリ数とそのサイズによって決まります。たとえば、それぞれが10KBの200,000エントリをインポートする場合、JVMのヒープ・サイズに2GBを指定し、ディレクトリ・サーバーのランタイム環境に少なくとも1GBを割り当て、残りをデータベース・キャッシュに割り当てます。
データベース・キャッシュは、dsconfig
コマンドライン・ユーティリティまたはOracle Unified Directory Services Managerのいずれかを使用し、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を使用したデータベース・キャッシュの設定」を参照してください。
7.5 データベース・キャッシュ・モードの設定
データベース・キャッシュ・モード(db-cache-mode
プロパティ)は、データベース・キャッシュ内のレコードのキャッシュを制御します。データベース・キャッシュを使用して、Java Edition(JE)のノード(上位、内部およびリーフ・ノード)を格納できます。レコードが格納または取得されるとき、データベース・キャッシュ・モードにより、キャッシュ内の他のレコードとの相対で、そのレコードがその後キャッシュに保持される期間が決定されます。
デフォルトのデータベース・キャッシュ・モードでは、キャッシュ内のすべてのタイプのノードが保持されます。ほとんどのデプロイメントで、デフォルトのモードが推奨されます。しかし、パフォーマンスが期待どおりではない場合、またはOracle Unified Directoryの実行に使用可能なメモリーではデータベース・キャッシュ内のすべてのエントリを保持できない場合には、モードの変更を検討する余地があります。
考慮すべき他のデータベース・キャッシュ・モードは次のとおりです。
-
evict-ln
モードは、使用されたリーフ・ノードをデータベース・キャッシュから追い出します。デフォルト・モードでのパフォーマンスが期待どおりではなく、Oracle Unified Directoryに割り当てられたメモリーがデータベースのサイズよりも小さい場合にのみ、このモードを使用します。このモードを使用すると、メモリー不足によるJavaのガベージ・コレクションや処理の経過時間(etime
)の異常値を低減します。 -
evict-ln
モードは、使用された下位の内部ノードをデータベース・キャッシュから追い出します。このモードを使用する前に、evict-ln
モードを試してみることをお薦めします。Oracle Unified Directoryに割り当てられたメモリーがデータベースのサイズよりもかなり小さく、パフォーマンスが期待どおりではない場合に、ステージング・デプロイメントでのみ、このモードを使用します。
データベース・キャッシュ・モードに指定できるその他の値は、『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 Unified Directoryの管理』のデータベース・キャッシュの管理に関する項も参照してください。