10.5. 通过资源限值提高搜索性能


通过数据库中的每个条目搜索可能会对更大目录的服务器性能造成负面影响。在大型数据库中,有效的索引可能不足以减少搜索范围以提高性能。

您可以设置对用户和客户端帐户的限值,以减少条目总数或单个搜索中花费的总时间量。这可以提高搜索速度,提高整体服务器性能。

10.5.1. 搜索大型目录的操作限制

您可以通过在客户端应用程序绑定到目录中使用特殊操作属性值来控制服务器限制。您可以设置以下搜索操作限制:

  • Look through limit 指定您可以为搜索操作检查多少条目。
  • Size 限制指定服务器响应搜索操作时返回到客户端应用程序的最大条目数。
  • Time 限制指定服务器可以花费的最大时间来处理搜索操作。
  • Idle timeout 限制指定在连接丢弃前可以闲置到服务器的时间。
  • Range 超时 限制使用范围指定单独的 look-through 限制,专门用于搜索。

在全局服务器配置中,客户端应用程序设置的资源限值优先于设置的默认资源限值。

注意

目录服务器默认接收无限资源,但范围搜索除外。

10.5.2. 使用索引扫描限制来搜索性能

对于大型索引,将任何与索引匹配的搜索视为未索引搜索是效率。搜索操作必须查看整个目录来处理结果,而不是通过一个索引来搜索,该索引与目录本身几乎是大小。

10.5.3. 细粒度 ID 列表大小

在大型数据库中,一些查询可能会消耗大量 CPU 和 RAM 资源。要提高性能,您可以使用 nsslapd-idlistscanlimit 属性设置应用于数据库中的所有索引的默认 ID 扫描限制。但是,为特定索引定义限制或使用定义 ID 的列表非常有用。您可以使用 nsIndexIDListScanLimit 属性为不同类型的搜索过滤器设置单独的设置 ID 列表扫描限制。

10.5.4. 使用命令行设置用户和全局资源限值

您可以使用命令行为特定类型的 搜索设置用户级别 资源限值、全局 资源限值和限制,如 简单页面范围搜索。您可以在适当的服务器配置区中设置单个条目和全局配置属性的用户级属性。

您可以使用 ldapmodify 命令为每个条目设置以下内容:

  • look-through

    您可以使用 look-through limit 属性指定要检查搜索操作的条目数量。将属性的值设置为 -1 表示没有限制。

    1. user-level 属性: nsLookThroughLimit
    2. 全局配置:

      1. attribute: nsslapd-lookthroughlimit
      2. entry: cn=config,cn=ldbm database,cn=plugins,cn=config

        # dsconf <instance_name> backend config set --lookthroughlimit <value>
        Copy to Clipboard Toggle word wrap
  • paged look-through

    您可以使用 paged look-through limit 属性指定要检查简单页面搜索操作的条目数量。将属性的值设置为 -1 表示没有限制。

    1. user-level 属性:ns PagedLookThroughLimit
    2. 全局配置:

      1. attribute: nsslapd-pagedlookthroughlimit
      2. entry: cn=config,cn=ldbm database,cn=plugins,cn=config

        # dsconf <instance_name> backend config set --pagedlookthroughlimit <value>
        Copy to Clipboard Toggle word wrap
  • size

    您可以使用 size limit 属性指定服务器返回到客户端应用程序的最大条目数,以响应搜索操作。将属性的值设置为 -1 表示没有限制。

    1. user-level attribute: nsSizeLimit
    2. 全局配置:

      1. attribute: nsslapd-sizelimit
      2. entry: cn=config

        # dsconf <instance_name> config replace nsslapd-sizelimit <value>
        Copy to Clipboard Toggle word wrap

        您可以在用户条目中添加 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
        ...
        Copy to Clipboard Toggle word wrap
  • paged size

    您可以使用 paged size limit 属性指定服务器返回到客户端应用程序的最大条目数,以获取简单页面的搜索操作。将属性的值设置为 -1 表示没有限制。

    1. user-level 属性:nsPage dSizeLimit
    2. 全局配置:

      1. attribute: nsslapd-pagedsizelimit
      2. entry: cn=config

        # dsconf <instance_name> config replace nsslapd-pagedsizelimit <value>
        Copy to Clipboard Toggle word wrap
  • time

    您可以使用 时间限制 属性指定服务器可以花费的最大时间来处理搜索操作。将属性的值设置为 -1 表示没有时间限制。

    1. user-level attribute: nsTimeLimit
    2. 全局配置:

      1. attribute: nsslapd-timelimit
      2. entry: cn=config

        # dsconf instance config replace nsslapd-timelimit <value>
        Copy to Clipboard Toggle word wrap
  • 空闲超时

    您可以使用闲置 timeout 属性来指定在连接断开前可以闲置到服务器的时间(以秒为单位)。将属性的值设置为 -1 表示没有限制。

    1. user-level attribute: nsidletimeout
    2. 全局配置:

      1. attribute: nsslapd-idletimeout
      2. entry: cn=config

        # dsconf <instance_name> config replace nsslapd-idletimeout <value>
        Copy to Clipboard Toggle word wrap
  • ID 列表扫描

    您可以指定从索引文件中加载的最大条目 ID 数,以获取搜索结果。如果 ID 列表大小大于 ID 的最大数量,则搜索将使用索引列表,但会将搜索视为未索引的搜索,并查找整个数据库。

    1. user-level 属性: nsIDListScanLimit
    2. 全局配置:

      1. attribute: nsslapd-idlistscanlimit
      2. entry: cn=config,cn=ldbm database,cn=plugins,cn=config

        # dsconf <instance_name> backend config set --idlistscanlimit <value>
        Copy to Clipboard Toggle word wrap
  • 页面 ID 列表扫描

    您可以使用页面的 ID 列表扫描限制指定从索引文件中加载的最大条目 ID 数,用于搜索结果的搜索结果。

    1. user-level 属性:ns PagedIDListScanLimit
    2. 全局配置:

      1. attribute: nsslapd-pagedidlistscanlimit
      2. entry: cn=config,cn=ldbm database,cn=plugins,cn=config

        # dsconf <instance_name> backend config set --pagedidlistscanlimit <value>
        Copy to Clipboard Toggle word wrap
  • 范围查找

    您可以使用范围 look-through 限制指定要检查范围搜索操作 的条目数量。将属性的值设置为 -1 表示没有限制。

    注意

    范围搜索是一个搜索,它使用了 大于号 ,equal- to-or-greater-than,less-than, 或 equal-to-less-than 运算符。

    1. 用户级属性: 不可用
    2. 全局配置:

      1. attribute: nsslapd-rangelookthroughlimit
      2. entry: cn=config,cn=ldbm database,cn=plugins,cn=config

        # dsconf <instance_name> backend config set --rangelookthroughlimit <value>
        Copy to Clipboard Toggle word wrap
        注意

        您可以设置访问控制列表以防止用户更改设置。

其他资源

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
    ...
    Copy to Clipboard Toggle word wrap
    注意

    出于性能考虑,模板必须位于正常的后端,而不是在不使用条目缓存的 cn=config 后缀中。

  2. nsslapd-anonlimitsdn 参数添加到服务器配置中,指向复制拓扑中所有供应商上的模板条目的 DN

    # dsconf <instance_name> config replace nsslapd-anonlimitsdn="cn=anonymous_template,ou=people,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap

10.5.6. 提高了范围搜索的性能

范围搜索(所有 ID 搜索)使用运算符将括号设置为搜索并返回目录中条目的整个子集。范围搜索可以评估目录中的每个条目,以检查条目是否在提供的范围内。

例如,要搜索在 1 月 1 日午夜之后修改的每个条目,请运行以下命令:

# (modifyTimestamp>=20210101010101Z)
Copy to Clipboard Toggle word wrap

要防止范围搜索转换为所有 ID 搜索,您可以使用 look-through 限制。通过使用这个限制,您可以提高整体性能并加快范围搜索结果。但是,一些客户端或管理用户(如 Directory Manager)无法设置 look-through 限制。在这种情况下,范围搜索可能需要几分钟才能完成,甚至可以无限期地继续。

但是,您可以设置单独的范围 look-through 限制。通过设置这个限制,客户端和管理用户可能具有较高的 查找 限制,并且仍然可以对性能影响的范围搜索设置合理的限制。

您可以使用 nsslapd-rangelookthroughlimit 属性配置这样的设置。默认值为 5000。

要将单独的范围 look-through 限制为 7500,请运行以下命令:

# dsconf <instance_name> backend config set --rangelookthroughlimit 7500
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat