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 file_of_attributes | 検索要求で使用される属性の一覧を含むファイルを参照します。各属性は、ファイルの個別の行に指定する必要があります。以下に例を示します。 [literal,subs="+quotes,verbatim"] …. attr1 attr2 … ….
これは |
-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 |
比較操作を指定します。これを使用する場合は、 |
-D bind_dn |
サーバーへの接続に使用する |
-d |
削除操作を指定します。これを使用する場合は、 |
-f filter | 検索操作で使用する検索フィルターが含まれます。 |
-h host | 接続する LDAP サーバーのホスト名を指定します。指定されていない場合、デフォルトは localhost です。 |
-i file |
[literal,subs="+quotes,verbatim"] …. joe jane ….
このファイルで使用できるフィルターオプションは、たとえば、 |
-j sample_interval | サンプルを収集する前に待機する間隔を秒単位で指定します。 |
-L | linger への接続を設定します。ユーティリティーが閉じられると接続が破棄されます。 |
-l | ユーティリティーの出力をログに記録します。 |
-M |
インデックス付き属性 ( |
-m |
インデックス付けされていない属性の変更操作を指定します ( |
-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 |
|
-t threads | ユーティリティーが開くスレッドの数を設定します。デフォルトでは 1 回です。 |
-U |
バインドファイルで使用するフィルターを渡します。 |
-u | ユーティリティーに、サーバーからバインドを解除し ない ように指示しますが、単に接続を閉じるように指示します。 |
-V |
|
-v | 詳細モードでコマンドを実行します。 |
-W |
|
-x |
ユーティリティーに対し、バインディングに |
-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
オプションを使用すると、複数のスレッドを開くことができます。