A.2. rsearch(検索ストレステスト)

rsearch ユーティリティーは、コマンドで設定されたパラメーターに従って、指定した Directory Server インスタンスに対するループで、同じ操作を迅速かつ繰り返し実行する複数のスレッドを開きます。

最も単純な rsearch は、検索操作のための複数のクライアント接続をエミュレートします。追加オプションを使用すると、rsearch を拡張して、検索操作と共に比較、変更、削除、バインド/バインド解除操作を実行できます。

このツールは操作のパフォーマンスも追跡し、平均結果の実行ストリームを出力します。

注記

rsearch テストの結果は、Directory Server とそのホストマシンのパフォーマンスによって自然に異なります。Red Hat Directory Server Performance Tuning Guideにあるように、最初にパフォーマンスのチューニングにより Directory Server およびマシンの設定を最適化します。

rsearch ユーティリティーは、/usr/bin ディレクトリーにあります。

A.2.1. 構文

rsearch-Dbind_dn-wpassword-ssuffix-ffilter-hhost-pport-Sscope-b-u-L-N-v-y-q-l-m-M-d-c-ifile_for_filters-BDN_or_uid_file-Aattributes-afile_of_attributes-n-osearch_time_limits-jsample_interval-tthreads-Ttimelimit-V-Cnumber_of_samples-Rreconnect_interval-x-Wpassword-Utext-\? or -H

A.2.2. オプション

表A.5 rsearch オプション

オプション説明

-A attributes

検索要求と使用する属性のリストが含まれます。これは -a と併用できません。

-a file_of_attributes

検索要求で使用される属性のリストを含むファイルを参照します。各属性は、ファイルの個別の行に指定する必要があります。以下に例を示します。

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

これは -A と併用できません。

-B DN_or_uid_file

サーバーにバインドするために使用される DN または UID のリストが含まれます。DN の場合、各エントリーには 2 つの行があります。1 つは DN と UID 用で (デフォルトパスワードとして使用されます)。

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

単純な UID ファイルには、1 行に 1 つの UID があります。

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

-b

すべての操作の前にバインドするようにユーティリティーに指示します。

-C sample_numbers

ユーティリティーを取得して終了するサンプルの数を指定します。

-c

比較操作を指定します。これを使用する場合は、-B オプションを使用する必要があります。

-D bind_dn

サーバーへの接続に使用する rsearch ユーティリティーのバインド DN を提供します。DN ファイル (-B -x) で他の ID が指定されていない場合、これはテストの実行に使用される ID です。

-d

削除操作を指定します。これを使用する場合は、-B オプションを使用する必要があります。

-f filter

検索操作で使用する検索フィルターが含まれます。

-h host

接続する LDAP サーバーのホスト名を指定します。指定されていない場合、デフォルトは localhost です。

-i file

-f オプションで渡される検索フィルターに追加される名前が含まれるファイルを参照します。name ファイルはリストであり、各名前は別々の行にあります。以下に例を示します。

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

このファイルで使用できるフィルターオプションは、たとえば、-f "uid =%s" です。これにより、"uid=joe""uid=jane" の両方のフィルターがランダムに使用されます。

-j sample_interval

サンプルを収集する前に待機する間隔を秒単位で指定します。

-L

linger への接続を設定します。ユーティリティーが閉じられると接続が破棄されます。

-l

ユーティリティーの出力をログに記録します。

-M

インデックス付き属性 (telephonenumber) の変更操作を指定します。これには、-B オプションが必要です。

-m

インデックス付けされていない属性の変更操作を指定します (description)。これには、-B オプションが必要です。

-N

ツールは、他の操作を実行せずにサーバーにのみバインドすることを指定します。

-n

将来の使用のために予約されています。

-o search_time_limit

検索操作に使用する時間制限を秒単位で指定します。

-p port

Directory Server インスタンスへの接続に使用するポートを指定します。これを使用しない場合、デフォルトは 389 です。

-q

ツールを警告なしで実行します。

-R reconnect_interval

サーバーへの接続を切断し、指定された回数の検索後に再接続するようにユーティリティーに指示します (reconnect_interval)。

-S scope

検索範囲を設定します。許可される値は、それぞれ 1 レベル、ベース、およびサブツリーに対応する 0、1、および 2 です。デフォルトは 2 です。

-s suffix

すべてのテストを実行する Directory Server の接尾辞を指定します。

-T timelimit

rsearch テストの合計時間制限を設定します。ユーティリティーがその制限に達すると、このツールは閉じます。

-t threads

ユーティリティーが開くスレッドの数を設定します。デフォルトでは 1 回です。

-U

バインドファイルで使用するフィルターを渡します。-x を使用しない場合、このオプションは無視されます。デフォルト値は '(uid=%s)' です。

-u

ユーティリティーに、サーバーからバインドを解除し ない ように指示しますが、単に接続を閉じるように指示します。

-V

rsearch の結果の実行平均値を表示します。

-v

詳細モードでコマンドを実行します。

-W

-B ファイルのアイデンティティーにバインドするために使用するパスワードを指定します。これが指定されていない場合、デフォルトは UID 値になります。

-x

ユーティリティーに対し、バインディングに -B ファイルの内容を使用するように指示します。これを使用しない場合は、-B オプションよりも無視されます。

-y

テスト間の遅延なしでコマンドを実行します。

-\? or -H

ツールの使用方法を出力します。

A.2.3. 使用方法

rsearch ユーティリティーは、LDAP 操作のパフォーマンスを測定するために使用できます。以下の例は、さまざまな一般的なテストシナリオで rsearch を使用する方法を示しています。

注記

rsearch にはフィルターやスコープなどの検索パラメーターの引数が必要ですが、これらの引数は空のままにして、他の種類の LDAP 操作のテストを実行できます。以下に例を示します。

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

A.2.3.1. 許可される設定ファイル

多くの場合、rsearch ツールはコマンドラインに渡される情報を使用してサーバーに接続します。rsearch ツールは、渡された引数の代わりに 2 つの異なる設定ファイルを受け入れることができます。

  • UID のリスト、または DN と UID の両方を含む DN または UID ファイル。DN/UID ファイルは、rsearch が複数のランダムに選択されたバインド ID を使用して接続できるようにします。操作テストは、バインド/バインド解除テストと組み合わせることができます。

    警告

    コマンドは、ディレクトリーからすでに削除されている DN/UID ファイル内の ID でバインドを試みる可能性があるため、ランダムバインド ID を削除テストで使用しないでください。

    DN/UID ファイルは、-B オプションとともに使用され、ファイルを渡し、次に操作オプション (-c-d-m、または -x) を渡します。

  • name ファイル。指定の LDAP フィルターの一部として使用する名前のリストが含まれます。ファイル内のフィルターは、-f オプションで指定されたフィルターよりも複雑になります。フィルターファイルは、さまざまな検索テストの実行に使用できます。たとえば、フィルターが少ししかないと、ツールがキャッシュから結果の取得を開始しますが、無効なフィルターを使用すると検索の失敗をテストすることができます。また、完全一致、複雑なフィルター、属性検索など、フィルターのパフォーマンスをテストすることもできます。

    フィルターファイルを使用する場合は、プレースホルダーの値で -f オプションを指定する必要があります。プレースホルダーは cn=%s などの属性値のみを置き換えるために使用できます。これは、フィルターファイルから属性値変数を取得するようにコマンドに指示します。プレースホルダーは、フィルター自体 (-f "%s") を置き換えて、ファイルからランダムに選択されたフィルターを提供することもできます。

    -i オプションは、検索フィルターに使用する名前ファイルを渡します。ファイル内のすべての行は、-f オプションで指定したフィルターに追加されます。これらの 2 つのオプションを同時に使用する方法は複数あります。

    • 最も簡単なシナリオでは、-f オプションを空のままにするため、プレースホルダーだけになります。この場合、フィルターは -i オプションで渡されたファイルから直接提供されます。
    • または、ファイルのエントリーは単に名前のリストとなり、-f オプションにパーシャルフィルターを指定することもできます。たとえば、名前ファイルには UID のリスト (jsmith、bjensen、amorrow) を含めることができ、-f フィルターは uid= にすることができます。rsearch は、検索フィルターを完了する名前を自動的に追加します。

A.2.3.2. rsearch の結果

定期的に (デフォルトでは 10 秒ごと)、rsearch は、スクリプトによって実行された操作の現在の移動平均を返します。

結果は最初に、その間隔内に 実行された操作の数を示します。括弧内の 2 つの比率は、1 秒あたりの合計操作数と、各操作に費やされた時間 (ミリ秒単位) を示しています (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 ファイルを含むファイル) は、さまざまな種類のインデックス付き属性をテストできます。

  • ワイルドカードのないフィルターでは、完全一致するパフォーマンスが表示されます。
  • ワイルドカードのあるフィルターにより、サブ文字列インデックスのパフォーマンスが提供されます。
  • 演算子 (=、> =、⇐、〜=) を使用したフィルターは、近似インデックスのパフォーマンスを示します

例A.18 基本検索

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

フィルターが 1 つしかなく、複数の検索操作があるため、キャッシュを行う基本的な検索では以下の引数を使用します。

  • -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 オプションを使用して、エントリー内の 3 つの特定の属性を検索します。

-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

-D および -w 引数で認証情報を使用する代わりに、rsearch ツールに対して、指定の UID または DN のリストからランダムバインド ID をプルするように指示できます。これには、以下の 2 つのオプションが必要です。

  • -B はバインド ID のリストを含むファイルを参照します。UID ファイルの場合、これは UID のリストであり、1 行に 1 つずつです。

    UID: uid1
    UID: uid2
    ...

    DN の場合、各エントリーには 2 つの行があります。1 つは DN と UID 用で (デフォルトパスワードとして使用されます)。

    DN: dn
    UID: uid
    ...
  • -x は、ツールによる -B 引数のファイルの使用を強制します。

DN の場合、ツールは DN に DN、UID 行の DN 行をパスワードとして使用します。-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 を使用すると、インデックス付きおよびインデックス化されていない 2 種類の属性で変更操作のパフォーマンスを測定できます。変更操作は、-M または -m オプションを使用して通知されます。変更操作を実行するエントリーのリストは、-B オプションを使用して渡されます。

注記

変更操作を実行するには、以下の形式の DN ファイルが必要です。

DN: dn1
UID: uid1

DN: dn2
UID: uid2
...

-b オプションを使用すると、bind-modify 操作の各セットのレートが測定されます。-b オプションを使用しない場合は、バインド操作が 1 つだけあり、テストでは実行されたすべての変更操作の平均が表示されます。

例A.22 インデックス付けされていない属性の操作を変更する

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

unindexed 属性に対する変更操作は、-m オプションを使用して実行されます。このコマンドは、DN ファイルから選択した各エントリーの description 属性で変更操作を実行します。

テストは description 属性をインデックス化しても正常に実行されるので、テストを実行する前に属性がインデックス化されていないことを確認してください。

例A.23 インデックス付き属性の操作を変更する

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

indexed 属性に対する変更操作は、-M オプションを使用して実行されます。このコマンドは、DN ファイルから選択された各エントリーの telephoneNumber 属性に対して変更操作を実行します。

telephoneNumber 属性がインデックス化されていない場合でもテストが正常に実行されるため、テストを実行する前に属性がインデックス化されていることを確認します。

A.2.3.6. 操作テストの比較

-c オプションを渡すと、rsearch を使用して ldapcompare 操作をテストできます。このツールは、-B オプションで指定した 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 引数は、比較操作を実行するようにコマンドに指示します。これは必須です。他の 2 つの引数は、比較操作のパフォーマンスを測定するのに便利です。

  • -B (-x なし)。サーバーが比較操作を実行できるエントリーのリストを提供します。
  • -v: rsearch を冗長モードで実行し、各バインド試行と比較操作の結果を出力します。

A.2.3.7. 操作テストの削除

削除のパフォーマンステストには 1 つのオプションのみ必要です。-d は、削除操作を実行するコマンドに指示します。他の操作と同様に、-B 引数を使用して、ランダムに選択および削除されるエントリーのリストを含むファイルを渡すことができます。

注記

コマンドは、すでに削除されている ID を使用してサーバーにバインドしようとする可能性があるため、削除操作で -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 には複数の時間ベースのメトリックがあります。

  • 1 ラウンドの統計を収集するために操作が実行される期間 (デフォルトでは 10 秒)
  • ツールの実行時間 (デフォルトでは、無期限)
  • ツールがサーバーへの接続を維持する期間 (デフォルトでは、無期限)

3 つの制限時間はすべてリセットできます。

例A.26 操作間隔の設定

# 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 秒であるため、出力のすべての行は、前の 10 秒間に実行された操作の統計を表します。この間隔は、-j オプションを使用して変更できます。

これにより、テスト間隔が 20 秒にリセットされます。

例A.27 テスト時間制限の設定

# 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 再接続間隔の設定

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

このツールは、通常、サーバーへの接続を 1 つ開きます。reconnect オプションの -R は、ツールが Directory Server に再接続する間隔を設定します。

A.2.3.9. 任意の操作によるテストのバインド

バインドおよびバインド解除のレートは、rsearch によって測定される任意の操作 (検索、変更、削除、比較) で確認できます。これには、すべての操作でサーバーにバインドするようにツールに指示する 1 つのオプション -b が必要です。

バインドテストでは、他に 2 つの属性を使用できます。-L (ツールを長持ちさせる) と -N (ツールに、他の操作を実行せずにバインドおよびバインド解除するように指示する) です。

例A.29 すべての操作でのバインドとバインド解除

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

rsearch によって実行されるすべての操作に対して、バインド操作とバインド解除操作を開始するために 2 つのオプションが使用されます。

  • -b (必須)
  • -L (推奨)

-f フィルター オプションで %s 変数を使用する場合は、-i filter_file オプションが必要です。

例A.30 匿名バインド操作のテスト

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

匿名バインドレートをテストするには、-b オプションを使用して、-D オプションおよび -w オプションの値を空のままにしてください。-N オプションは、コマンドがバインドおよびバインド解除操作のみを試みるようにします。

例A.31 ランダムバインド操作のテスト

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

匿名バインド操作と同様に、必要な引数を空白のままにすることができます。-N オプションは、コマンドがバインドおよびバインド解除操作のみを試行することを保証し、-B および -x オプションは、コマンドが選択するランダムなバインド認証情報のリストを提供します。

例A.32 バインド操作でフィルターを使用したテスト

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

通常、バインドファイル (UID または DN) に含まれる任意の ID をバインドテストに使用できます。デフォルトのフィルターは (uid=%s) で、これはすべての ID エントリーにあります。ファイル内の ID のサブセットのみを使用するには、-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 は操作のために 1 つのスレッドを開きます。-t オプションを使用すると、複数のスレッドを開くことができます。