A.2. rsearch(搜索 Stress Tests Test)

rsearch 程序根据命令中设置的参数,在循环中快速和重复执行同一操作的多个线程。

在最简单的情况下,rsearch 模拟多个客户端连接进行搜索操作。通过附加选项,可以扩展 rsearch 来执行比较、修改、删除和 bind/unbind 操作以及搜索操作。

该工具还跟踪操作的性能并输出了平均结果的运行流。

注意

rsearch 测试的结果自然地取决于目录服务器及其主机机器的性能。首先通过性能调优(如 Red Hat Directory Server Performance Tuning Guide中)优化目录服务器和机器的配置。

rsearch 工具程序位于 /usr/bin 目录中。

A.2.1. 语法

rsearch-Dbind_dn-wpassword-ssuffix-ffilter-hhost-pport-Sscope-b-u-L-N-v-y-q-l-l-m-m-d-c-ifile_for_filters -bDN_or_uid_file-Aattributes-afile_of_attributes-n-osearch_time_limits-jsample_interval-tthread-Ttimelimit-V-Cnumber_of_samples-Rreconnect_interval -x-W密码-Utext-\? 或 -H

A.2.2. 选项

表 A.5. rsearch 选项

选项描述

-a 属性

包含要用于搜索请求的属性列表。这不能与 -a 一起使用。

-a file_of_attributes

指向包含要与搜索请求搭配使用的属性列表的文件。每个属性都必须位于文件的单独行中。例如:

[literal,subs="+quotes,verbatim"] …​. attr1 attr2 …​ …​.

这不能与 -A 一起使用。

-B DN_or_uid_file

包含用于绑定到服务器的 DN 或 UID 的列表。对于 DN,每个条目具有两个行,一个用于 DN,一个用于 UID(用作默认密码):

[literal,subs="+quotes,verbatim"] …​.DN: dn UID: uid …​ …​.

UID 文件一个简单的 UID 每行一个 UID:

[literal,subs="+quotes,verbatim"] …​.UID: uid1 UID: uid2 …​ …​.

-b

告知实用程序在每个操作前绑定。

-c sample_numbers

给出要获取的示例数量,然后退出实用程序。

-c

指定比较操作。如果使用此操作,则必须使用 -B 选项。

-D bind_dn

赋予 rsearch 实用工具用来连接到服务器的绑定 DN;如果没有在 DN 文件(-B -x)中提供其他身份,则这是用于运行测试的身份。

-d

指定删除操作。如果使用此操作,则必须使用 -B 选项。

-f filter

包含要用于搜索操作的搜索过滤器。

-H 主机

指定要连接的 LDAP 服务器的主机名。默认(如果未指定)是 localhost。

-I 文件

指的是包含要附加到使用 -f 选项传递的搜索过滤器的文件名。name 文件是一个列表,每行都有一个名称。例如:

[literal,subs="+quotes,verbatim"] …​. joe jane …​.

可以与此文件一起使用的过滤器选项为: -f "uid=%s",这会导致对 "uid=joe""uid=jane" 进行随机使用的过滤器。

-j sample_interval

指定在收集样本前要等待的时间间隔(以秒为单位)。

-L

将连接设置为linger。当实用程序关闭时,连接会被丢弃。

-l

记录实用程序输出。

-M

为索引属性(电话)指定修改操作。这需要 -B 选项。

-m

为 unindexed 属性指定修改操作(描述)。这需要 -B 选项。

-N

指定 工具将只绑定到服务器,而不运行任何其他操作。

-n

保留以供将来使用。

-o search_time_limit

设定用于搜索操作的时间限值(以秒为单位)。

-p 端口

提供用于连接 Directory 服务器实例的端口。如果没有使用它,则默认为 389。

-q

以静默方式运行该工具。

-R reconnect_interval

告诉 实用程序将连接丢弃到服务器,并在指定搜索数后重新连接(connect_interval)。

-S 范围

设置搜索范围。允许的值分别为 0、1 和 2,它们分别对应于一级、基础和子树。默认值为 2。

-s suffix

为 Directory Server 中的后缀提供运行所有测试的后缀。

-T timelimit

rsearch 测试设置总时间限制。当实用程序达到这个限制后,工具就会关闭。

-T 线程

为实用程序设置要打开的线程数量。默认值为 1。

-U

传递过滤器以用于绑定文件。如果没有使用 -x,则忽略这个选项。默认值为 '(uid=%s)'

-u

告知 实用程序不 从服务器取消绑定,但只需关闭连接即可。

-V

显示 rsearch 结果的运行平均值。

-v

以详细模式运行该命令。

-W

提供用于在 -B 文件中绑定身份的密码。如果未指定,则默认值为 UID 值。

-x

告知 实用程序将 -B 文件的内容用于绑定。如果没有使用这个选项,则忽略 -B 选项。

-y

运行测试之间没有延迟的命令。

-\? 或 -H

打印工具的使用。

A.2.3. 使用场景

rsearch 实用程序可用于衡量任何 LDAP 操作的性能。以下示例演示了如何使用 rsearch 来获取各种常见测试场景。

注意

虽然 rsearch 需要搜索参数(如 filter 和 scope)参数,但这些参数也可以留空,以便为其他类型的 LDAP 操作执行测试。例如:

# rsearch -D "cn=Directory Manager" -w secret -s "" -f ""

A.2.3.1. 允许的配置文件

大部分时候,rsearch 工具会使用命令行中传递的信息来连接服务器。rsearch 工具可以接受两个不同的配置文件来代替传递参数:

  • DN 或 UID 文件,其中包含 UID 或 DN 和 UID 的列表。DN/UID 文件允许 rsearch 使用多个随机选择的绑定身份进行连接。任何操作测试都可以与 bind/unbind 测试合并。

    警告

    不应将随机绑定身份用于删除测试,因为该命令可能会尝试与已经从 目录删除的 DN/UID 文件中的身份绑定。

    DN/UID 文件与 -B 选项配合使用,以传递文件,然后是-c-d-m-x

  • 名称 文件,其中包含用作给定 LDAP 过滤器的一部分的名称列表。文件中的过滤器可能比 -f 选项中指定的过滤器更复杂。过滤器文件可用于运行多个不同的搜索测试。例如,只有几个过滤器表示 工具将开始从缓存中检索结果,而使用无效过滤器则可测试搜索失败。它还可以测试过滤性能,如完全匹配、复杂过滤器或属性搜索。

    使用过滤器文件时,必须使用占位符值传递 -f 选项。占位符只能用于仅替换属性值,如 cn=%s,它告知命令从过滤器文件中拉取属性值变量。占位符也可以替换过滤器本身(-f "%s"),以便从文件中提供随机选择的过滤器。

    i 选项传递用于搜索过滤器的名称文件。文件中的每一行都附加给通过 -f 选项给出的任何过滤器。这两个选项可以通过几种不同的方式一起使用:

    • 最简单的场景会将 -f 选项留空,因此它只是一个占位符。在这种情况下,过滤器会直接从使用 -i 选项传递的文件中获取。
    • 或者,文件中条目可能只是一个名称列表,可为 -f 选项指定部分过滤器。例如,名称文件可以包含 UID 列表(jsmith、bjensen、toorrow)和 -f 过滤器可以是 "uid="rsearch 会自动附加名称以完成搜索过滤器。

A.2.3.2. rsearch 的结果

rsearch 定期返回由脚本运行操作的当前运行平均值(默认为十秒)。

结果首先显示 在该间隔内执行的操作 数量。圆括号中的两个比率显示每秒操作总数,然后以毫秒为单位的时间,以毫秒为单位(1 秒以操作总数除以 1000 的倍数)。

date timestamp - Rate: num_ops/thr (ops/sec = num ms/op), total: ops (number thr)

例如:

# rsearch -D "cn=Directory Manager" -w password -s "ou=people,dc=example,dc=com" -f "objectclass=%s" -i /home/filter.txt
rsearch: 1 threads launched.

20100209 20:20:40 - Rate: 65961.00/thr (6596.10/sec = 0.1516ms/op), total: 65961 (1 thr)

A.2.3.3. 搜索测试

rsearch 的核心用法是搜索测试。只能使用带有 rsearch 的必要参数(不带任何参数)来测量搜索性能:

# rsearch -D bind_dn -w password -s suffix -f filter

可以使用选项来测量特定性能或使用特定环境。

搜索过滤器(在命令行中或通过带有 -i 文件的文件)可以测试不同类型的索引属性:

  • 没有通配符的过滤器显示完全匹配的性能
  • 带有通配符的过滤器为子字符串索引提供性能
  • 带有 operators 的过滤器(=, >=, IFL, ~=)显示 approximate 索引的性能

例 A.18. 基本搜索

# rsearch -D "cn=test user,cn=config" -w secret -s "dc=example,dc=com" -f "sn=smith"

一个基本的搜索(覆盖缓存,因为只有一个过滤器,多个搜索操作)使用以下参数:

  • -d,它为绑定身份提供
  • -w,它为绑定密码提供
  • -S,提供搜索目标(范围)
  • -f,提供搜索过滤器

例 A.19. 搜索特定属性

# rsearch -D "cn=test user,cn=config" -w secret -s "dc=example,dc=com" -f "sn=%s" -i /home/filter.txt -A givenname,mail,uid

除了所需参数外,该命令使用 -A 选项搜索条目中的三个特定属性。

如果您使用 - f 过滤器选项中的 %s 变量,则需要 -i filter _file 选项。

A.2.3.4. 身份验证测试

rsearch 实用程序在(必需) -D-w 参数中使用用户 DN 和密码绑定到服务器。要测试身份验证性能,这些凭据可以留空,可以传递随机选择的凭证列表,或者设置为特殊用户(如 Directory Manager)。

例 A.20. 匿名绑定

# rsearch -D "" -w "" -s "dc=example,dc=com" -f "sn=%s" -i /home/filter.txt

D-w 参数具有 emtpy 值,因此工具没有任何用于连接到服务器的绑定凭据。这会启动匿名绑定。

例 A.21. 随机用户身份验证

# rsearch -D "" -w "" -s "dc=example,dc=com" -f "sn=%s" -i /home/filter.txt -B /home/uids.txt -x

可以指示 rsearch 工具从给定 UID 或 DN 列表中拉取随机绑定身份,而不是在 -D-w 参数中使用凭证。这需要两个选项:

  • - b 指向一个带有绑定身份列表的文件。对于 UID 文件,这只是 UID 列表,每行一个:

    UID: uid1
    UID: uid2
    ...

    对于 DN,每个条目具有两个行,一个用于 DN,一个用于 UID(用作默认密码):

    DN: dn
    UID: uid
    ...
  • -x 会强制工具使用 -B 参数中的 文件。

对于 DN,该工具使用 DN 行的 DN 行,并将 UID 行用作密码。-U 选项告知工具使用 UID 以外的属性作为条目命名属性,-W 传递不同的密码(默认情况下为 UID)。

# rsearch -D "" -w "" -s "dc=example,dc=com" -f "sn=%s" -i /home/filter.txt -B /home/uids.txt -x -U "(cn=*)" -W newpassword

A.2.3.5. 修改操作测试

rsearch 可用于衡量两种属性中修改操作的性能:索引和未索引。修改操作通过使用 -M-m 选项信号。使用 -B 选项传递要对其运行修改操作的条目列表。

注意

运行修改操作需要一个 DN 文件,其格式为:

DN: dn1
UID: uid1

DN: dn2
UID: uid2
...

使用 -b 选项测量各组 bind-modify 操作的速度。如果没有使用 -b 选项,则只有一个绑定操作,test 会显示运行的所有修改操作的平均修改操作。

例 A.22. 在 Unindexed Attributes 上修改操作

# rsearch -D "cn=test user,cn=config" -w secret -s "" -f "" -m -B /home/dns.txt -v

使用 -m 选项针对 未索引 属性修改操作。命令对从 DN 文件选择的每个条目都执行修改操作。

测试将成功运行,即使 description 属性被索引,因此要确保在运行测试前没有索引属性。

例 A.23. 修改索引属性上的操作

# rsearch -D "cn=test user,cn=config" -w secret -s "" -f "" -M -B /home/dns.txt -v

使用 -M 选项针对 索引 属性修改操作。该命令对从 DN 文件选择的每个条目执行修改操作。

即使未索引了 phone Number 属性,测试也将成功运行,因此要确保在运行测试之前对属性进行索引。

A.2.3.6. 比较操作测试

可以使用 rsearch 选项通过 -c 选项测试 ldapcompare 操作。该工具根据 -B 选项传递的 UID 列表,对 UID 属性运行与 UID 属性进行比较。

注意

运行比较操作需要一个 DN 文件,其格式如下:

DN: dn1
UID: uid1

DN: dn2
UID: uid2
...

例 A.24. 比较操作

# rsearch -D "cn=test user,cn=config" -w secret -s "" -f "" -c -B /home/dns.txt -v

-c 参数告知命令执行比较操作。这是必须的。另有两个参数来测量比较操作的性能:

  • - b(没有 -x),它提供了服务器可以比较操作的条目列表。
  • -v,它以详细模式运行 rsearch,并打印每个绑定尝试的结果并比较操作。

A.2.3.7. 删除操作测试

删除性能测试只需要一个选项: -d,该命令告诉命令运行 delete 操作。与其他操作一样,可以使用 -B 参数传递一个文件,其中包含要随机选择和删除的条目列表。

注意

不要将 -B -x 选项对用于删除操作,因为该命令可能会尝试使用已删除的身份绑定到服务器。

例 A.25. 删除操作

# rsearch -D "cn=test user,cn=config" -w secret -s "" -f "" -d -B /home/dns.txt

如果使用 -B 参数提供可删除的条目列表,则它必须是 DN 文件,其格式为:

DN: dn1
UID: uid1

DN: dn2
UID: uid2
...

A.2.3.8. 更改时间限制

与许多性能测试一样,rsearch 有几个基于时间的指标:

  • 运行操作的周期用于收集一轮统计数据(默认为十秒)
  • 工具的运行时间(默认为无限)
  • 工具保持与服务器的连接时长(默认为永久)

可以重置所有三个时间限制。

例 A.26. 设置 Operations Interval

# rsearch -D "cn=test user,cn=config" -w secret -s "dc=example,dc=com" -f "cn=%s" -i /home/filter.txt -b -j 20

rsearch 工具会打印以立即间隔内执行的操作的结果。默认间隔为十(10)秒,因此输出中的每一行代表在前十秒中运行的操作统计信息。该间隔可使用 -j 选项更改。

这会将测试间隔重置为 20 秒。

例 A.27. 设置 Test Time Limit

# rsearch -D "cn=test user,cn=config" -w secret -s "dc=example,dc=com" -f "cn=%s" -i /home/filter.txt -b -T 600

...

20100210 18:36:21 - Rate: 68561.00/thr (6856.10/sec = 0.1459ms/op), total: 68561 (1 thr)
20100210 18:36:31 - Rate: 78016.00/thr (7801.60/sec = 0.1282ms/op), total: 78016 (1 thr)
Final Average rate: 7328.85/sec = 0.1364msec/op, total: 78016

通常,命令会无限期地运行,直到命令中断。-T 选项设定运行测试的时间限制(以秒为单位),然后干净退出。当工具退出时,它会输出所有测试运行间隔的平均摘要。

例 A.28. 设置 Reconnect Interval

# rsearch -D "cn=test user,cn=config" -w secret -s "dc=example,dc=com" -f "cn=%s" -i /home/filter.txt -b -R 30

该工具通常打开一个连接到服务器的连接。重新连接选项 -R 会为工具设置时间以重新连接到 Directory 服务器。

A.2.3.9. 使用任何操作绑定测试

可使用任何操作(搜索、修改、删除、比较)检查绑定和未绑定率,由 rsearch 测量。这需要一个选项 -b,它告知工具使用每个操作绑定到服务器。

另有两个属性可用于绑定测试: -L (将工具设置为linger)和 -N (这样会告知工具来绑定和取消绑定而无需执行任何其他操作)。

例 A.29. 使用每个操作绑定和 Unbinding

# rsearch -D "cn=test user,cn=config" -w secret -s "dc=example,dc=com" -f "cn=%s" -i /home/filter.txt -b -L

两个选项用来为 rsearch 执行的每个操作启动绑定和未绑定操作:

  • -b (必需)
  • -L (推荐)

如果您使用 - f 过滤器选项中的 %s 变量,则需要 -i filter _file 选项。

例 A.30. 测试匿名绑定操作

# rsearch -D "" -w "" -s "" -f "" -N -b -L

要测试匿名绑定率,只需使用 -b 选项,并将 -D-w 选项的值留空。N 选项可确保命令只尝试绑定和未绑定操作。

例 A.31. 测试 Random Bind Operations

# rsearch -D "" -w "" -s "" -f "" -B /home/uids.txt -x -N -b -L

与匿名绑定操作一样,所需参数可以留空。N 选项可确保命令只尝试绑定和取消绑定操作,而 -B-x 选项则提供从中选择的随机绑定凭证列表。

例 A.32. 使用带有 Bind Operations 的 Filter 进行测试

# rsearch -D "" -w "" -s "" -f "" -B /home/uids.txt -x -U "(uid=*son)" -N -b -L

通常,绑定文件(UID 或 DN)中包含的任何身份都可用于绑定测试。默认过滤器是 "(uid=%s)",每个身份条目都具有。要只使用文件中身份的子集,可以使用 -U 选项传递替代的过滤器。

A.2.3.10. 执行多线程测试

例 A.33. 多个线程

# rsearch -D "cn=test user,cn=config" -w secret -s "dc=example,dc=com" -f "sn=%s" -i /home/filter.txt -t 5

默认情况下,rsearch 会打开操作的一个线程。t 选项允许打开多个线程。