10.5. 通过资源限值提高搜索性能
通过数据库中的每个条目搜索可能会对更大目录的服务器性能造成负面影响。在大型数据库中,有效的索引可能不足以减少搜索范围以提高性能。
您可以设置对用户和客户端帐户的限值,以减少条目总数或单个搜索中花费的总时间量。这可以提高搜索速度,提高整体服务器性能。
10.5.1. 搜索大型目录的操作限制 复制链接链接已复制到粘贴板!
您可以通过在客户端应用程序绑定到目录中使用特殊操作属性值来控制服务器限制。您可以设置以下搜索操作限制:
-
Look throughlimit 指定您可以为搜索操作检查多少条目。 -
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-throughlimit 属性指定要检查搜索操作的条目数量。将属性的值设置为-1表示没有限制。-
user-level 属性:
nsLookThroughLimit 全局配置:
-
attribute:
nsslapd-lookthroughlimit entry:
cn=config,cn=ldbm database,cn=plugins,cn=configdsconf <instance_name> backend config set --lookthroughlimit <value>
# dsconf <instance_name> backend config set --lookthroughlimit <value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
attribute:
-
user-level 属性:
paged look-through您可以使用
paged look-throughlimit 属性指定要检查简单页面搜索操作的条目数量。将属性的值设置为-1表示没有限制。-
user-level 属性:ns
PagedLookThroughLimit 全局配置:
-
attribute:
nsslapd-pagedlookthroughlimit entry:
cn=config,cn=ldbm database,cn=plugins,cn=configdsconf <instance_name> backend config set --pagedlookthroughlimit <value>
# dsconf <instance_name> backend config set --pagedlookthroughlimit <value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
attribute:
-
user-level 属性:ns
size您可以使用
sizelimit 属性指定服务器返回到客户端应用程序的最大条目数,以响应搜索操作。将属性的值设置为-1表示没有限制。-
user-level attribute:
nsSizeLimit 全局配置:
-
attribute:
nsslapd-sizelimit entry:
cn=configdsconf <instance_name> config replace nsslapd-sizelimit <value>
# dsconf <instance_name> config replace nsslapd-sizelimit <value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以在用户条目中添加
nsSizeLimit属性,并为其提供搜索返回大小限制500条目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
attribute:
-
user-level attribute:
paged size您可以使用
paged sizelimit 属性指定服务器返回到客户端应用程序的最大条目数,以获取简单页面的搜索操作。将属性的值设置为-1表示没有限制。-
user-level 属性:nsPage
dSizeLimit 全局配置:
-
attribute:
nsslapd-pagedsizelimit entry:
cn=configdsconf <instance_name> config replace nsslapd-pagedsizelimit <value>
# dsconf <instance_name> config replace nsslapd-pagedsizelimit <value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
attribute:
-
user-level 属性:nsPage
time您可以使用
时间限制属性指定服务器可以花费的最大时间来处理搜索操作。将属性的值设置为-1表示没有时间限制。-
user-level attribute:
nsTimeLimit 全局配置:
-
attribute:
nsslapd-timelimit entry:
cn=configdsconf instance config replace nsslapd-timelimit <value>
# dsconf instance config replace nsslapd-timelimit <value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
attribute:
-
user-level attribute:
空闲超时您可以使用闲置
timeout属性来指定在连接断开前可以闲置到服务器的时间(以秒为单位)。将属性的值设置为-1表示没有限制。-
user-level attribute:
nsidletimeout 全局配置:
-
attribute:
nsslapd-idletimeout entry:
cn=configdsconf <instance_name> config replace nsslapd-idletimeout <value>
# dsconf <instance_name> config replace nsslapd-idletimeout <value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
attribute:
-
user-level attribute:
ID 列表扫描您可以指定从索引文件中加载的最大条目 ID 数,以获取搜索结果。如果 ID 列表大小大于 ID 的最大数量,则搜索将使用索引列表,但会将搜索视为未索引的搜索,并查找整个数据库。
-
user-level 属性:
nsIDListScanLimit 全局配置:
-
attribute:
nsslapd-idlistscanlimit entry:
cn=config,cn=ldbm database,cn=plugins,cn=configdsconf <instance_name> backend config set --idlistscanlimit <value>
# dsconf <instance_name> backend config set --idlistscanlimit <value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
attribute:
-
user-level 属性:
页面 ID 列表扫描您可以使用页面的 ID
列表扫描限制指定从索引文件中加载的最大条目 ID数,用于搜索结果的搜索结果。-
user-level 属性:ns
PagedIDListScanLimit 全局配置:
-
attribute:
nsslapd-pagedidlistscanlimit entry:
cn=config,cn=ldbm database,cn=plugins,cn=configdsconf <instance_name> backend config set --pagedidlistscanlimit <value>
# dsconf <instance_name> backend config set --pagedidlistscanlimit <value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
attribute:
-
user-level 属性:ns
范围查找您可以使用范围
look-through 限制指定要检查范围搜索操作的条目数量。将属性的值设置为-1表示没有限制。注意范围搜索是一个搜索,它使用了
大于号 ,,equal-to-or-greater-thanless-than, 或equal-to-less-than运算符。-
用户级属性:
不可用 全局配置:
-
attribute:
nsslapd-rangelookthroughlimit entry:
cn=config,cn=ldbm database,cn=plugins,cn=configdsconf <instance_name> backend config set --rangelookthroughlimit <value>
# dsconf <instance_name> backend config set --rangelookthroughlimit <value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以设置访问控制列表以防止用户更改设置。
-
attribute:
-
用户级属性:
其他资源
10.5.5. 对匿名绑定设置资源限值 复制链接链接已复制到粘贴板!
您可以通过创建一个具有资源限值的模板用户条目来配置匿名绑定的资源限值,然后将此模板应用到匿名绑定,因为资源限值在用户条目上设置,并且匿名绑定没有关联用户条目。
先决条件
- 已创建了模板条目。
流程
设置您要应用到匿名绑定的资源限值:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意出于性能考虑,模板必须位于正常的后端,而不是在不使用条目缓存的
cn=config后缀中。将
nsslapd-anonlimitsdn参数添加到服务器配置中,指向复制拓扑中所有供应商上的模板条目的DN:dsconf <instance_name> config replace nsslapd-anonlimitsdn="cn=anonymous_template,ou=people,dc=example,dc=com"
# dsconf <instance_name> config replace nsslapd-anonlimitsdn="cn=anonymous_template,ou=people,dc=example,dc=com"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.5.6. 提高了范围搜索的性能 复制链接链接已复制到粘贴板!
范围搜索(所有 ID 搜索)使用运算符将括号设置为搜索并返回目录中条目的整个子集。范围搜索可以评估目录中的每个条目,以检查条目是否在提供的范围内。
例如,要搜索在 1 月 1 日午夜之后修改的每个条目,请运行以下命令:
(modifyTimestamp>=20210101010101Z)
# (modifyTimestamp>=20210101010101Z)
要防止范围搜索转换为所有 ID 搜索,您可以使用 look-through 限制。通过使用这个限制,您可以提高整体性能并加快范围搜索结果。但是,一些客户端或管理用户(如 Directory Manager)无法设置 look-through 限制。在这种情况下,范围搜索可能需要几分钟才能完成,甚至可以无限期地继续。
但是,您可以设置单独的范围 look-through 限制。通过设置这个限制,客户端和管理用户可能具有较高的 查找 限制,并且仍然可以对性能影响的范围搜索设置合理的限制。
您可以使用 nsslapd-rangelookthroughlimit 属性配置这样的设置。默认值为 5000。
要将单独的范围 look-through 限制为 7500,请运行以下命令:
dsconf <instance_name> backend config set --rangelookthroughlimit 7500
# dsconf <instance_name> backend config set --rangelookthroughlimit 7500