10.5. リソース制限による検索パフォーマンスの改善
データベース内のすべてのエントリーを検索すると、大きいディレクトリーの場合は、サーバーのパフォーマンスに悪影響を及ぼす可能性があります。大規模なデータベースでは、効果的なインデックス作成によって検索範囲が十分に縮小されず、パフォーマンスが向上しない可能性があります。
ユーザーアカウントとクライアントアカウントに制限を設定して、エントリーの合計数や個々の検索にかかる合計時間を削減できます。これにより、検索の応答性が向上し、サーバー全体のパフォーマンスが向上します。
10.5.1. 大規模なディレクトリーの検索操作の制限 リンクのコピーリンクがクリップボードにコピーされました!
ディレクトリーにバインドするクライアントアプリケーションの特別な操作属性値を使用して、検索操作のサーバー制限を制御できます。以下の検索操作制限を設定できます。
-
Look through制限は、検索操作で検査できるエントリーの数を指定します。 -
Size制限は、検索操作に応じてサーバーがクライアントアプリケーションに返すエントリーの最大数を指定します。 -
Time制限は、サーバーが検索操作の処理に費やすことができる最大時間を指定します。 -
Idle timeout制限は、接続が切断されるまでサーバーへの接続がアイドル状態になれる時間を指定します。 -
Range timeout制限は、特に範囲を使用した検索に対して個別のlook-through制限を指定します。
クライアントアプリケーションに設定されたリソース制限は、グローバルサーバー設定で設定されるデフォルトのリソース制限よりも優先されます。
Directory Server は、範囲検索を除いて、デフォルトで無制限のリソースを受け取ります。
10.5.2. インデックススキャン制限による検索パフォーマンスの向上 リンクのコピーリンクがクリップボードにコピーされました!
大規模なインデックスでは、インデックスに一致する検索をインデックス化されていない検索として扱う方が実際には効率的です。検索操作では、結果を処理するためにディレクトリー自体に加え、ディレクトリーのサイズに近いサイズのインデックスを検索するのではなく、ディレクトリー全体を検索する必要があります。
10.5.3. 粒度の細かい ID リストサイズ リンクのコピーリンクがクリップボードにコピーされました!
大規模なデータベースでは、一部のクエリーが大量の CPU および RAM リソースを消費する可能性があります。パフォーマンスを向上させるために、nsslapd-idlistscanlimit 属性を使用して、データベース内のすべてのインデックスに適用されるデフォルトの ID スキャン制限を設定できます。ただし、特定のインデックスに対して制限を定義するか、ID が定義されていないリストを使用すると便利です。nsIndexIDListScanLimit 属性を使用して、さまざまなタイプの検索フィルターの ID リストスキャン制限を個別に設定できます。
10.5.4. コマンドラインを使用したユーザーおよびグローバルリソース制限の設定 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して、user-level リソース制限、global resource 制限、および simple paged や range searches などの特定タイプの検索への制限を設定できます。user-level 属性は各エントリーに設定でき、グローバル設定属性は適切なサーバー設定エリアに設定されます。
ldapmodify コマンドを使用して、エントリーごとに以下の操作属性を設定できます。
look-throughlook-through制限属性を使用して、検索操作で検査するエントリーの数を指定できます。この属性の値を-1に設定すると、制限がないことを示します。-
user-level 属性:
nsLookThroughLimit グローバル設定:
-
属性:
nsslapd-lookthroughlimit エントリー:
cn=config,cn=ldbm database,cn=plugins,cn=config# dsconf <instance_name> backend config set --lookthroughlimit <value>
-
属性:
-
user-level 属性:
paged look-throughpaged look-through制限属性を使用すると、単純なページ検索操作を調べるエントリーの数を指定できます。この属性の値を-1に設定すると、制限がないことを示します。-
user-level 属性:
nsPagedLookThroughLimit グローバル設定:
-
属性:
nsslapd-pagedlookthroughlimit エントリー:
cn=config,cn=ldbm database,cn=plugins,cn=config# dsconf <instance_name> backend config set --pagedlookthroughlimit <value>
-
属性:
-
user-level 属性:
sizesize制限属性を使用すると、検索操作に応じてサーバーがクライアントアプリケーションに返すエントリーの最大数を指定できます。この属性の値を-1に設定すると、制限がないことを示します。-
user-level 属性:
nsSizeLimit グローバル設定:
-
属性:
nsslapd-sizelimit エントリー:
cn=config# dsconf <instance_name> config replace nsslapd-sizelimit <value>nsSizeLimit属性をユーザーのエントリーに追加し、検索の戻りサイズの制限をたとえば500エントリーに設定できます。# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x ... dn: uid=user_name,ou=People,dc=example,dc=com changetype: modify add: nsSizeLimit nsSizeLimit: 500 ...
-
属性:
-
user-level 属性:
paged sizepaged size制限属性を使用すると、単純なページ検索操作でサーバーがクライアントアプリケーションに返すエントリーの最大数を指定できます。この属性の値を-1に設定すると、制限がないことを示します。-
user-level 属性:
nsPagedSizeLimit グローバル設定:
-
属性:
nsslapd-pagedsizelimit エントリー:
cn=config# dsconf <instance_name> config replace nsslapd-pagedsizelimit <value>
-
属性:
-
user-level 属性:
timetime制限属性を使用して、サーバーが検索操作の処理に費やすことができる最大時間を指定できます。属性の値を-1に設定すると、時間制限がないことを示します。-
user-level 属性:
nsTimeLimit グローバル設定:
-
属性:
nsslapd-timelimit エントリー:
cn=config# dsconf instance config replace nsslapd-timelimit <value>
-
属性:
-
user-level 属性:
idle timeoutidle timeout属性を使用すると、サーバーへの接続が切断されるまでのアイドル状態の時間 (秒単位) を指定できます。この属性の値を-1に設定すると、制限がないことを示します。-
user-level 属性:
nsidletimeout グローバル設定:
-
属性:
nsslapd-idletimeout エントリー:
cn=config# dsconf <instance_name> config replace nsslapd-idletimeout <value>
-
属性:
-
user-level 属性:
ID list scan検索結果のインデックスファイルから読み込まれるエントリー ID の最大数を指定できます。ID リストのサイズが ID の最大数より大きい場合、検索はインデックスリストを使用せず、インデックスなしの検索として扱われ、データベース全体を検索します。
-
user-level 属性:
nsIDListScanLimit グローバル設定:
-
属性:
nsslapd-idlistscanlimit エントリー:
cn=config,cn=ldbm database,cn=plugins,cn=config# dsconf <instance_name> backend config set --idlistscanlimit <value>
-
属性:
-
user-level 属性:
paged ID list scanpaged ID list scan制限を使用することで、特にページ検索操作の場合に、検索結果のインデックスファイルから読み込まれるエントリー ID の最大数を指定できます。-
user-level 属性:
nsPagedIDListScanLimit グローバル設定:
-
属性:
nsslapd-pagedidlistscanlimit エントリー:
cn=config,cn=ldbm database,cn=plugins,cn=config# dsconf <instance_name> backend config set --pagedidlistscanlimit <value>
-
属性:
-
user-level 属性:
range look-throughrange look-through制限を使用して、範囲検索操作で検査するエントリーの数を指定できます。この属性の値を-1に設定すると、制限がないことを示します。注記範囲検索は、
greater-than、equal-to-or-greater-than、less-than、またはequal-to-less-than演算子を使用した検索です。-
user-level 属性:
not available グローバル設定:
-
属性:
nsslapd-rangelookthroughlimit エントリー:
cn=config,cn=ldbm database,cn=plugins,cn=config# dsconf <instance_name> backend config set --rangelookthroughlimit <value>注記アクセス制御リストを設定して、ユーザーが設定を変更できないようにすることができます。
-
属性:
-
user-level 属性:
関連情報
10.5.5. 匿名バインドでのリソース制限の設定 リンクのコピーリンクがクリップボードにコピーされました!
リソース制限を含むテンプレートユーザーエントリーを作成し、このテンプレートを匿名バインドに適用することで、匿名バインドのリソース制限を設定できます。これは、リソース制限はユーザーエントリーに設定されており、匿名バインドにはそれに関連付けられたユーザーエントリーがないためです。
前提条件
- テンプレートエントリーが作成されました。
手順
匿名バインドに適用するリソース制限を設定します。
# ldapadd -D "cn=Directory Manager" -W -H ldap://server.example.com -x ... dn: cn=anonymous_template,ou=people,dc=example,dc=com objectclass: nsContainer objectclass: top cn: anonymous_template nsSizeLimit: 250 nsLookThroughLimit: 1000 nsTimeLimit: 60 ...注記パフォーマンス上の理由から、テンプレートは、エントリーキャッシュは使用しない
cn=config接尾辞ではなく、通常のバックエンドになければなりません。レプリケーショントポロジー内にあるすべてのサプライヤーのテンプレートエントリーの
DNを参照するnsslapd-anonlimitsdnパラメーターをサーバー設定に追加します。# dsconf <instance_name> config replace nsslapd-anonlimitsdn="cn=anonymous_template,ou=people,dc=example,dc=com"
10.5.6. 範囲検索のパフォーマンスの向上 リンクのコピーリンクがクリップボードにコピーされました!
範囲検索 (すべての ID 検索) では、演算子を使用して括弧を設定し、ディレクトリー内のエントリーのサブセット全体を検索して返します。範囲検索では、ディレクトリー内のすべてのエントリーを評価して、エントリーが指定された範囲内にあるか確認できます。
たとえば、1 月 1 日の午前 0 時以降に変更されたすべてのエントリーを検索するには、以下のコマンドを実行します。
# (modifyTimestamp>=20210101010101Z)
look-through 制限を使用して、範囲検索がすべての ID 検索にならないようにすることが可能です。この制限を使用すると、全体的なパフォーマンスが向上し、範囲検索結果の速度が向上します。ただし、一部のクライアントまたは管理ユーザー (Directory Manager など) は、look-through 制限を設定できません。この場合、範囲検索は、完了するまでに数分かかったり、無限に続いたりする可能性があります。
ただし、別の範囲の look-through 制限を設定できます。この制限を設定することにより、クライアントと管理ユーザーは look-through 制限を高く設定でき、パフォーマンスが低下する可能性のある範囲検索に対して引き続き適切な制限を設定できます。
このような設定は、nsslapd-rangelookthroughlimit 属性を使用して設定できます。デフォルト値は 5000 です。
個別の範囲の look-through 制限を 7500 に設定するには、以下のコマンドを実行します。
# dsconf <instance_name> backend config set --rangelookthroughlimit 7500