2

VUserスクリプトが実行されるたびに(コントローラーシナリオの仮想ユーザーの数のように)一意のファイルをアップロードしたいのですが、さまざまなフォーラムでいくつかの例を見つけ、それらを一緒に見つけて、このタスクを実行しようとしました。

Action()
{

char command[100];
sprintf(command, “copy C:\\source_dir\\srcFile.txt C:\\source_dir\\srcFile-%s.txt”,              
lr_eval_string (”{iteration_number}”));
system(command);

web_submit_data("FileUpload",
"Action={URL}",
"Method=POST",
"EncType=multipart/form-data",
"TargetFrame=",
"RecContentType=text/html",
"Mode=HTML",
ITEMDATA,
"Name=File", "Value=C:\\source_dir\\srcFile-%s.txt", "File=yes", ENDITEM,
LAST);

sprintf(command, “del C:\\source_dir\\srcFile-%s.txt”, lr_eval_string (”{iteration_number}”));
system(command);

return 0;


}

ただし、このスクリプトは毎回100個のファイルを作成するので、それは私が共犯したいことではありません。1.スクリプトを変更して100個の一意のファイルを作成するにはどうすればよいですか(1回)。2.次に、コントローラーのVUserごとに1回アップロード(web_submit_data関数)を実行します。3.そして最後にファイルを削除しますか?

たぶん、ファイル生成をinitに入れ、ファイル削除をVUserスクリプトの最後の部分に入れますか?

4

2 に答える 2

2

いくつかのオプションがあります。

  1. テスト中に必要なすべてのファイルを事前に生成してから、完全修飾ファイル名を一意のパラメーターとして仮想ユーザースクリプトに渡すことができます。ファイルが負荷ジェネレーターにある場合は、読み取りの競合が発生し、仮想ユーザーがドライブの読み取りヘッドをめぐって競合するため、仮想ユーザーに影響を与えます。ファイルがネットワーク接続ストレージ上にある場合は、ファイルをネットワークを介して負荷ジェネレーターに移動し、次にジェネレーターからアップロードのために再度移動することもできます。テスト中にファイルを小さなセカンダリドライブであるSSDに単独で配置すると、読み取りアクセスを劇的に向上させることができます。
  2. その場でファイルを作成できます。(a)ランダムなファイルサイズを定義します(b)ランダムなファイル名を定義します(c)ローカルコンテキストでファイルを書き込みます(d)アップロードにスクリプトでファイルを使用します(e)ファイルを削除します アップロードされたファイルが各ユーザーの反復ごとに一意のファイル名とサイズである必要があると仮定すると、これはすべて反復のコンテキストになります。このためには、パフォーマンステスト中のハードディスクの使用に関する多くのベストプラクティスルールに違反する必要があります。数十になりますか?数百?ローカルディスクサブシステムへのアクセスを争うすべての仮想ユーザースレッドの数。これは、CPUが優先度の高いI / O割り込みタスクのために送信され、ユーザープロセスから離れるときに、すべての仮想ユーザーの速度を低下させるためのレシピです。スレッドがファイルを作成|書き込み|読み取りしてから削除するときに、ハードドライブのヘッドを読み取り/書き込みします。
于 2013-02-21T14:15:51.400 に答える
1

あなたのスクリプトはもうすぐそこにあると思います。私が見ている問題は、作成しているファイルに対して十分に一意のファイル名がないことです。100人のユーザーはそれぞれ、同じイテレーション番号で開始します。

このようなことを試して、スクリプトのパラメータリストに「vuser」という名前の新しいパラメータを作成し、それにタイプ「VuserID」を割り当てることができます。これは、コントローラーで実行したときに個々の仮想ユーザーの番号として入力されます。これにより、ユーザーがファイルを使用しているときにお互いを踏まないようになります。次のようにファイル名にこれを追加します。

sprintf(command, "copy C:\\source_dir\\srcFile.txt C:\\source_dir\\srcFile-%s%s.txt,              
lr_eval_string ("{iteration_number}")
lr_eval_string ("{vuser}") );

これは、すべてのユーザーがコントローラーの同じグループに属している限り機能します。これを複数のグループで使用する場合は、ファイル名に「グループ名」パラメーターを追加して同じことを行います。

于 2013-02-28T20:33:27.890 に答える