CSVデータセットの構成要素で読み取っているURLの非常に大きなCSVファイル(8000以上のアイテム)があります。これは、HTTP要求サンプラーのパスを設定し、whileコントローラーで反復します。
各ユーザー(スレッド)がCSV URLリストからランダムなURLを選択することを除いて、これは問題ありません。不要なのは、各スレッドがCSVアイテムを順番に使用することです。
複数のHTTPリクエストサンプラーを備えたランダムオーダーコントローラーでこれを実現できましたが、8000以上のHTTPサンプラーは実際にjmeterを使用できない状態に陥らせました。これが、HTTP Sampler URLをCSVファイルに入れる理由です。ただし、CSVファイルデータでランダムオーダーコントローラーを使用できるようではありません。では、スレッドごとにランダムなCSVデータ項目を選択するにはどうすればよいですか?
これを達成する別の方法があります:
これは実際にはランダムではなく、ファイルは引き続き順番に読み取られますが、作業スレッドはファイル内でジャンプします。それは私のために働いた;-)
Csvデータを読み取るときのランダム選択機能はありません。その理由は、これを行うには最初にファイル全体をメモリに読み込む必要があるためです。これは、負荷テストツール(任意の負荷テストツール)では悪い考えです。
他の商用ツールは、データを自動的に再処理することでこの問題を解決します。 JMeterでは、任意のフィールドを使用してデータをソートするだけで、同じことを手動で行うことができます。姓で並べ替えると、結果は実質的にランダム分布になります。
注意。デフォルトを保証する場合All Threads
がCSVデータセット構成に設定されている場合、データはJMeterプロセスのスコープ内で一意になります。
他の答えが述べているように、ランダムに行を選択できないのは、ファイル全体をメモリに読み込まなければならないため、非効率的です。
JMeterにその場で処理させるのではなく、テストを開始する前にファイルの順序自体をランダム化するだけではどうでしょうか。
Perlなどのスクリプト言語は、これを簡単に処理します。
cat unrandom.csv | Perl -MList::Util=shuffle -e 'print shuffle<STDIN>' > random.csv
BlazeMeterプラグインの新しい Random CSV Data Set Config は、ニーズに完全に適合するはずです。
これがうまくいくかどうかはわかりませんが、とにかく提案します。
URLを100個の異なるCSVファイルに分割しないでください。次に、各スレッドで乱数を生成し、その番号を使用して、__ CSVRead関数を使用して読み取るCSVファイルを識別します。
CSVRead "> http://jmeter.Apache.org/usermanual/functions.html#_CSVRead
__CSVRead関数が毎回ファイルを開くのか、スレッド間で同じファイルハンドルを共有するのかがわからない部分があります。
試してみてください。調査結果を共有してください。
非常に簡単な解決策。 CSVファイルで、列B(たとえばB1)の最初のセルに別の列(たとえばB)apply = Rand()関数を追加します。これにより、ランダムな浮動小数点数が作成されます。セル(たとえばB1)の角をドラッグして、対応するすべてのURLに適用します。ソート列B。URLはランダムにソートされます。列Bを削除します。