9.8. キャッシュ設定の管理
Directory Server は以下のキャッシュを使用します。
- 個々のディレクトリーエントリーが含まれるエントリーキャッシュ。
- 識別名 (DN) キャッシュは、DN と相対識別名 (RDN) をエントリーに関連付けるために使用されます。
-
データベースインデックスファイル
*.dbファイルを含むデータベースキャッシュ。
最高のパフォーマンス向上を実現するには、すべてのキャッシュサイズですべてのレコードを保存できる必要があります。推奨される自動サイズ設定機能を使用せず、使用可能な RAM を十分確保できない場合は、前に示した順序でキャッシュに空きメモリーを割り当てます
9.8.1. cache-autosize および cache-autosize-split パラメーターがデータベースとエントリーのキャッシュサイズに与える影響 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Directory Server は自動サイズ変更機能を使用して、インスタンスの起動時にサーバーのハードウェアリソース上のデータベースとエントリーキャッシュの両方のサイズを最適化します。
Red Hat は、自動サイズ設定機能を使用し、キャッシュサイズを手動で設定しないことを推奨します。
cn=config,cn=ldbm database,cn=plugins,cn=config エントリーの以下のパラメーターは自動サイズ設定を制御します。
nsslapd-cache-autosizeこれらの設定は、データベースとエントリーキャッシュの自動サイズ設定を有効にするかどうかを制御します。自動サイズ設定は、以下の場合に有効になります。
-
nsslapd-cache-autosizeパラメーターが0より大きい値に設定されている場合、データベースとエントリーキャッシュの両方で有効になります。 -
nsslapd-cache-autosizeおよびnsslapd-dbcachesizeパラメーターが0に設定されている場合、データベースキャッシュで有効になります。 -
nsslapd-cache-autosizeおよびnsslapd-cachememsizeパラメーターが0に設定されている場合、エントリーキャッシュで有効になります。
-
nsslapd-cache-autosize-split- この値は、Directory Server がデータベースキャッシュに使用する RAM の割合を設定します。サーバーは残りのパーセンテージをエントリーキャッシュに使用します。
- データベースキャッシュに 1.5 GB を超える RAM を使用しても、パフォーマンスは向上しません。そのため、Directory Server はデータベースキャッシュを 1.5 GB に制限します。
デフォルトでは、Directory Server は次の値を使用します。
-
nsslapd-cache-autosize: 25 -
nsslapd-cache-autosize-split: 25 -
nsslapd-dbcachesize: 1,536 MB
これらの設定を使用すると、システムの空き RAM の 25% が使用されます (nsslapd-cache-autosize)。このメモリーのうち、サーバーは 25% をデータベースキャッシュ (nsslapd-cache-autosize-split) に使用し、残りの 75% をエントリーキャッシュに使用します。
空き RAM に応じて、以下のキャッシュサイズになります。
| 空き RAM (GB 単位) | データベースキャッシュサイズ | エントリーキャッシュサイズ |
|---|---|---|
| 1 GB | 64 MB | 192 MB |
| 2 GB | 128 MB | 384 MB |
| 4 GB | 256 MB | 768 MB |
| 8 GB | 512 MB | 1,536 MB |
| 16 GB | 1,024 MB | 3,072 MB |
| 32 GB | 1,536 MB | 6,656 MB |
| 64 GB | 1,536 MB | 14,848 MB |
| 128 GB | 1,536 MB | 31,232 MB |
9.8.2. 必要なキャッシュサイズ リンクのコピーリンクがクリップボードにコピーされました!
dsconf monitor dbmon コマンドを使用すると、実行時にキャッシュ統計を監視できます。統計を表示するには、次のコマンドを実行します。
# dsconf <instance_name> monitor dbmon
DB Monitor Report: 2022-02-24 10:25:16
--------------------------------------------------------
Database Cache:
- Cache Hit Ratio: 50%
- Free Space: 397.31 KB
- Free Percentage: 2.2%
- RO Page Drops: 0
- Pages In: 2934772
- Pages Out: 219075
Normalized DN Cache:
- Cache Hit Ratio: 60%
- Free Space: 19.98 MB
- Free Percentage: 99.9%
- DN Count: 100000
- Evictions: 9282348
Backends:
- dc=example,dc=com (userroot):
- Entry Cache Hit Ratio: 66%
- Entry Cache Count: 50000
- Entry Cache Free Space: 2.0 KB
- Entry Cache Free Percentage: 0.8%
- Entry Cache Average Size: 8.9 KB
- DN Cache Hit Ratio: 21%
- DN Cache Count: 100000
- DN Cache Free Space: 4.29 MB
- DN Cache Free Percentage: 69.8%
- DN Cache Average Size: 130.0 B
必要に応じて、-b back_end または -x オプションをコマンドに渡して、特定のバックエンドまたはインデックスの統計を表示します。
キャッシュのサイズが十分である場合、DN Cache Count の数は Cache Count バックエンドエントリーの値と一致します。さらに、すべてのエントリーと DN がそれぞれのキャッシュ内に収まる場合、Entry Cache Count カウント値は DN Cache Count 値と一致します。
この例の出力は、以下のようになります。
2.2% の空きデータベースキャッシュのみが残っている場合:
Database Cache: ... - Free Space: 397.31 KB - Free Percentage: 2.2%ただし、効率的に操作するには 15% 以上の空きデータベースキャッシュが必要です。データベースキャッシュの最適なサイズを決定するには、サブディレクトリーと changelog データベースを含む
/var/lib/dirsrv/slapd-<instance_name>/db/ディレクトリー内のすべての*.dbファイルのサイズを計算し、オーバーヘッドとして 12% を追加します。データベースキャッシュを設定するには、コマンドラインを使用したデータベースキャッシュサイズの設定 を参照してください。
userrootデータベースの DN キャッシュは適正です。Backends: - dc=example,dc=com (userroot): ... - DN Cache Count: 100000 - DN Cache Free Space: 4.29 MB - DN Cache Free Percentage: 69.8% - DN Cache Average Size: 130.0 Bデータベースの DN キャッシュには 100000 のレコードが含まれ、キャッシュの空き領域の割合は 69.8 % で、メモリーの各 DN には平均 130 バイトが必要です。
DN キャッシュを設定するには、コマンドラインを使用した DN キャッシュサイズの設定 を参照してください。
userrootデータベースのエントリーキャッシュの統計は、パフォーマンスを向上させるためにエントリーキャッシュの値を大きくする必要があることを示しています。Backends: - dc=example,dc=com (userroot): ... - Entry Cache Count: 50000 - Entry Cache Free Space: 2.0 KB - Entry Cache Free Percentage: 0.8% - Entry Cache Average Size: 8.9 KBエントリーキャッシュのこのデータベースには 50000 のレコードが含まれており、残りの空き領域は 2 キロバイトのみです。Directory Server がすべての 100000 DN をキャッシュできるようにするには、キャッシュを最小でも 890 MB(100000 DN * 8,9 KB の平均エントリーサイズ) に増やす必要があります。ただし、Red Hat は、必要な最小サイズを次に大きい GB に切り上げし、その結果を 2 倍にすることを推奨します。この例では、エントリーキャッシュを 2 ギガバイトに設定する必要があります。
エントリーキャッシュを設定するには、コマンドラインを使用したエントリーキャッシュサイズの設定 を参照してください。
9.8.3. コマンドラインを使用したデータベースキャッシュサイズの設定 リンクのコピーリンクがクリップボードにコピーされました!
データベースキャッシュには、データベースの Berkeley データベースインデックスファイルが含まれます。つまり、データベースによる属性のインデックス化に使用されるすべての *.db およびその他のファイルになります。この値は、Berkeley DB API 関数 set_cachesize() に渡されます。このキャッシュサイズは、エントリーキャッシュサイズに比べて Directory Server のパフォーマンスへの影響は少ないですが、エントリーキャッシュサイズを設定した後に RAM に余裕がある場合は、データベースキャッシュに割り当てるメモリー量を増やします。
手順
Automatic Cache Tuning を無効にします。
# dsconf <instance_name> backend config set --cache-autosize=0データベースのキャッシュサイズを手動で設定します。
# dsconf <instance_name> backend config set --dbcachesize=268435456データベースのキャッシュサイズをバイト単位で指定します。この例では、コマンドはデータベースキャッシュを 256 MB に設定します。
インスタンスを再起動します。
# dsctl <instance_name> restart
9.8.4. Web コンソールを使用したデータベースキャッシュサイズの設定 リンクのコピーリンクがクリップボードにコピーされました!
データベースキャッシュには、データベースの Berkeley データベースインデックスファイルが含まれます。つまり、データベースによる属性のインデックス化に使用されるすべての *.db およびその他のファイルになります。この値は、Berkeley DB API 関数 set_cachesize() に渡されます。このキャッシュサイズは、エントリーキャッシュサイズに比べて Directory Server のパフォーマンスへの影響は少ないですが、エントリーキャッシュサイズを設定した後に RAM に余裕がある場合は、データベースキャッシュに割り当てるメモリー量を増やします。
前提条件
- Web コンソールでインスタンスにログインしている。
手順
-
に移動します。 - Automatic Cache Tuning の選択を解除します。
- をクリックします。
-
256 MB の場合は
268435456のように、データベースキャッシュサイズをバイト単位で Database Cache Size フィールドに入力します。 - をクリックします。
- 右上隅の をクリックし、Restart Instance を選択します。
9.8.5. コマンドラインを使用した DN キャッシュサイズの設定 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server は entryrdn インデックスを使用して、識別名 (DN) および相対識別名 (RDN) をエントリーに関連付けます。これにより、サーバーは効率的にサブツリーの名前を変更し、エントリーを移動し、moddn 操作を実行できます。サーバーは DN キャッシュを使用して entryrdn インデックスのメモリー内表現をキャッシュし、コストのかかるファイル I/O および変換操作を回避します。
自動チューニング機能を使用しない場合、特にエントリーの名前変更と移動操作で最高のパフォーマンスを得るには、DN キャッシュを、Directory Server がデータベース内のすべての DN をキャッシュできるサイズに設定します。
DN がキャッシュに保存されていない場合、Directory Server は entryrdn.db インデックスデータベースファイルから DN を読み取り、オンディスクフォーマットからインメモリーフォーマットに DN を変換します。キャッシュに保存されている DN により、サーバーはディスク I/O および変換の手順をスキップできます。
手順
接尾辞とそれに対応するバックエンドを表示します。
# dsconf <instance_name> backend suffix list dc=example,dc=com (userroot)このコマンドにより、各接尾辞の横にバックエンドデータベースが表示されます。次の手順で、接尾辞のデータベース名が必要です。
DN キャッシュサイズを設定します。
# dsconf <instance_name> backend suffix set --dncache-memsize=20971520 userRootこのコマンドは、
userRootデータベースの DN キャッシュを 20 メガバイトに設定します。インスタンスを再起動します。
# dsctl <instance_name> restart
9.8.6. Web コンソールを使用した DN キャッシュサイズの設定 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server は entryrdn インデックスを使用して、識別名 (DN) および相対識別名 (RDN) をエントリーに関連付けます。これにより、サーバーは効率的にサブツリーの名前を変更し、エントリーを移動し、moddn 操作を実行できます。サーバーは DN キャッシュを使用して entryrdn インデックスのメモリー内表現をキャッシュし、コストのかかるファイル I/O および変換操作を回避します。
自動チューニング機能を使用しない場合、特にエントリーの名前変更と移動操作で最高のパフォーマンスを得るには、DN キャッシュを、Directory Server がデータベース内のすべての DN をキャッシュできるサイズに設定します。
DN がキャッシュに保存されていない場合、Directory Server は entryrdn.db インデックスデータベースファイルから DN を読み取り、オンディスクフォーマットからインメモリーフォーマットに DN を変換します。キャッシュに保存されている DN により、サーバーはディスク I/O および変換の手順をスキップできます。
前提条件
- Web コンソールでインスタンスにログインしている。
手順
-
に移動します。 - DN Cache Size フィールドに DN キャッシュサイズをバイト単位で入力します。
- をクリックします。
- 右上隅の をクリックし、Restart Instance を選択します。
9.8.7. コマンドラインを使用したエントリーキャッシュサイズの設定 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server はエントリーキャッシュを使用して、検索および読み取り操作中に使用されるディレクトリーエントリーを格納します。すべてのレコードを格納できるサイズにエントリーキャッシュを設定すると、検索操作のパフォーマンスに最も大きな影響を与えます。
エントリーのキャッシュが設定されていない場合、Directory Server は id2entry.db データベースファイルからエントリーを読み取り、識別名 (DN) をディスク上のフォーマットからメモリー内のフォーマットに変換します。キャッシュに保存されているエントリーにより、サーバーはディスク I/O および変換の手順をスキップできます。
手順
自動キャッシュチューニングを無効にします。
# dsconf <instance_name> backend config set --cache-autosize=0 Successfully updated database configuration接尾辞とそれに対応するバックエンドを表示します。
# dsconf <instance_name> backend suffix list dc=example,dc=com (userroot)このコマンドにより、各接尾辞の横にバックエンドデータベースが表示されます。次の手順で、接尾辞のデータベース名が必要です。
データベースのエントリーキャッシュサイズをバイト単位で設定します。
# dsconf <instance_name> backend suffix set --cache-memsize=2147483648 userRootこのコマンドは、
userRootデータベースのエントリーキャッシュを 2 GB に設定します。インスタンスを再起動します。
# dsctl <instance_name> restart
9.8.8. Web コンソールを使用したエントリーキャッシュサイズの設定 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server はエントリーキャッシュを使用して、検索および読み取り操作中に使用されるディレクトリーエントリーを格納します。すべてのレコードを格納できるサイズにエントリーキャッシュを設定すると、検索操作のパフォーマンスに最も大きな影響を与えます。
エントリーのキャッシュが設定されていない場合、Directory Server は id2entry.db データベースファイルからエントリーを読み取り、識別名 (DN) をディスク上のフォーマットからメモリー内のフォーマットに変換します。キャッシュに保存されているエントリーにより、サーバーはディスク I/O および変換の手順をスキップできます。
前提条件
- Web コンソールでインスタンスにログインしている。
手順
-
に移動します。 - Automatic Cache Tuning 設定を無効にします。
- をクリックします。
- 右上隅の をクリックし、Restart Instance を選択します。
-
に移動します。 - Entry Cache Size フィールドにデータベースキャッシュのサイズを設定します。
- をクリックします。
- 右上隅の をクリックし、Restart Instance を選択します。