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 属性 |
包含要用于搜索请求的属性列表。这不能与 |
-a file_of_attributes | 指向包含要与搜索请求搭配使用的属性列表的文件。每个属性都必须位于文件的单独行中。例如: [literal,subs="+quotes,verbatim"] …. attr1 attr2 … ….
这不能与 |
-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 |
指定比较操作。如果使用此操作,则必须使用 |
-D bind_dn |
赋予 |
-d |
指定删除操作。如果使用此操作,则必须使用 |
-f filter | 包含要用于搜索操作的搜索过滤器。 |
-H 主机 | 指定要连接的 LDAP 服务器的主机名。默认(如果未指定)是 localhost。 |
-I 文件 |
指的是包含要附加到使用 [literal,subs="+quotes,verbatim"] …. joe jane ….
可以与此文件一起使用的过滤器选项为: |
-j sample_interval | 指定在收集样本前要等待的时间间隔(以秒为单位)。 |
-L | 将连接设置为linger。当实用程序关闭时,连接会被丢弃。 |
-l | 记录实用程序输出。 |
-M |
为索引属性( |
-m |
为 unindexed 属性指定修改操作( |
-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 |
为 |
-T 线程 | 为实用程序设置要打开的线程数量。默认值为 1。 |
-U |
传递过滤器以用于绑定文件。如果没有使用 |
-u | 告知 实用程序不 从服务器取消绑定,但只需关闭连接即可。 |
-V |
显示 |
-v | 以详细模式运行该命令。 |
-W |
提供用于在 |
-x |
告知 实用程序将 |
-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
选项允许打开多个线程。