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 pagedrange searches などの特定タイプの検索への制限を設定できます。user-level 属性は各エントリーに設定でき、グローバル設定属性は適切なサーバー設定エリアに設定されます。

ldapmodify コマンドを使用して、エントリーごとに以下の操作属性を設定できます。

  • look-through

    look-through 制限属性を使用して、検索操作で検査するエントリーの数を指定できます。この属性の値を -1 に設定すると、制限がないことを示します。

    1. user-level 属性: nsLookThroughLimit
    2. グローバル設定:

      1. 属性: nsslapd-lookthroughlimit
      2. エントリー: cn=config,cn=ldbm database,cn=plugins,cn=config

        # dsconf <instance_name> backend config set --lookthroughlimit <value>
  • paged look-through

    paged look-through 制限属性を使用すると、単純なページ検索操作を調べるエントリーの数を指定できます。この属性の値を -1 に設定すると、制限がないことを示します。

    1. user-level 属性: nsPagedLookThroughLimit
    2. グローバル設定:

      1. 属性: nsslapd-pagedlookthroughlimit
      2. エントリー: cn=config,cn=ldbm database,cn=plugins,cn=config

        # dsconf <instance_name> backend config set --pagedlookthroughlimit <value>
  • size

    size 制限属性を使用すると、検索操作に応じてサーバーがクライアントアプリケーションに返すエントリーの最大数を指定できます。この属性の値を -1 に設定すると、制限がないことを示します。

    1. user-level 属性: nsSizeLimit
    2. グローバル設定:

      1. 属性: nsslapd-sizelimit
      2. エントリー: 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
        ...
  • paged size

    paged size 制限属性を使用すると、単純なページ検索操作でサーバーがクライアントアプリケーションに返すエントリーの最大数を指定できます。この属性の値を -1 に設定すると、制限がないことを示します。

    1. user-level 属性: nsPagedSizeLimit
    2. グローバル設定:

      1. 属性: nsslapd-pagedsizelimit
      2. エントリー: cn=config

        # dsconf <instance_name> config replace nsslapd-pagedsizelimit <value>
  • time

    time 制限属性を使用して、サーバーが検索操作の処理に費やすことができる最大時間を指定できます。属性の値を -1 に設定すると、時間制限がないことを示します。

    1. user-level 属性: nsTimeLimit
    2. グローバル設定:

      1. 属性: nsslapd-timelimit
      2. エントリー: cn=config

        # dsconf instance config replace nsslapd-timelimit <value>
  • idle timeout

    idle timeout 属性を使用すると、サーバーへの接続が切断されるまでのアイドル状態の時間 (秒単位) を指定できます。この属性の値を -1 に設定すると、制限がないことを示します。

    1. user-level 属性: nsidletimeout
    2. グローバル設定:

      1. 属性: nsslapd-idletimeout
      2. エントリー: cn=config

        # dsconf <instance_name> config replace nsslapd-idletimeout <value>
  • ID list scan

    検索結果のインデックスファイルから読み込まれるエントリー ID の最大数を指定できます。ID リストのサイズが ID の最大数より大きい場合、検索はインデックスリストを使用せず、インデックスなしの検索として扱われ、データベース全体を検索します。

    1. user-level 属性: nsIDListScanLimit
    2. グローバル設定:

      1. 属性: nsslapd-idlistscanlimit
      2. エントリー: cn=config,cn=ldbm database,cn=plugins,cn=config

        # dsconf <instance_name> backend config set --idlistscanlimit <value>
  • paged ID list scan

    paged ID list scan 制限を使用することで、特にページ検索操作の場合に、検索結果のインデックスファイルから読み込まれるエントリー ID の最大数を指定できます。

    1. user-level 属性: nsPagedIDListScanLimit
    2. グローバル設定:

      1. 属性: nsslapd-pagedidlistscanlimit
      2. エントリー: cn=config,cn=ldbm database,cn=plugins,cn=config

        # dsconf <instance_name> backend config set --pagedidlistscanlimit <value>
  • range look-through

    range look-through 制限を使用して、範囲検索操作で検査するエントリーの数を指定できます。この属性の値を -1 に設定すると、制限がないことを示します。

    注記

    範囲検索は、greater-thanequal-to-or-greater-thanless-than、または equal-to-less-than 演算子を使用した検索です。

    1. user-level 属性: not available
    2. グローバル設定:

      1. 属性: nsslapd-rangelookthroughlimit
      2. エントリー: cn=config,cn=ldbm database,cn=plugins,cn=config

        # dsconf <instance_name> backend config set --rangelookthroughlimit <value>
        注記

        アクセス制御リストを設定して、ユーザーが設定を変更できないようにすることができます。

10.5.5. 匿名バインドでのリソース制限の設定

リソース制限を含むテンプレートユーザーエントリーを作成し、このテンプレートを匿名バインドに適用することで、匿名バインドのリソース制限を設定できます。これは、リソース制限はユーザーエントリーに設定されており、匿名バインドにはそれに関連付けられたユーザーエントリーがないためです。

前提条件

  • テンプレートエントリーが作成されました。

手順

  1. 匿名バインドに適用するリソース制限を設定します。

    # 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 接尾辞ではなく、通常のバックエンドになければなりません。

  2. レプリケーショントポロジー内にあるすべてのサプライヤーのテンプレートエントリーの 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
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る