2013-08-28 86 views
11

私はCSVデータセット構成要素で読んでいるURLの非常に大きなCSVファイル(8000+個のアイテム)を持っています。これは、HTTPリクエストサンプラーのパスを入力し、whileコントローラーを反復処理しています。JmeterのCSVファイルからランダムに選択

これは、各ユーザー(スレッド)にCSV URLリストからランダムなURLを選択させたい場合を除いて問題ありません。私が望まないのは、各スレッドがCSVアイテムを順番に使用することです。

これは、複数のHTTPリクエストサンプラーを使用したランダムオーダーコントローラーで実現できましたが、8000+ HTTPサンプラーは実際にjmeterを使用できない状態に陥りました。ですから、私はHTTPサンプラーのURLをCSVファイルに入れています。しかし、CSVファイルデータでランダムオーダーコントローラを使用することはできません。だから、どのようにスレッドごとにランダムなCSVデータ項目の選択を行うことができますか?

答えて

0

これがうまくいくかどうかわかりませんが、とにかくそれを提案します。

なぜ100種類のCSVファイルでURLを分割しないのですか?次に、各スレッドで乱数を生成し、その数値を使用して__CSVRead関数を使用して読み取るCSVファイルを識別します。今

CSVRead "> http://jmeter.apache.org/usermanual/functions.html#_CSVRead

私は__CSVRead機能がファイルを毎回または共有同じファイルを再び開く場合はわからない部分のみスレッド間で扱う。

をあなたの調査結果を共有してください。それを試してみたいことがあります。

1

にCSVデータを読み込む際に全くランダム選択機能はありません。その理由は、あなたが最初にメモリにファイル全体を読み込む必要がありますですこれを行うと負荷テストツール(任意の負荷テストツール)で悪い考えです。

他の商用ツールは、データを自動的に再処理することでこの問題を解決します。 JMeterでは、任意のフィールドを使用してデータを並べ替えるだけで、手動で同じ結果を得ることができます。あなたが並べ替えて、姓を言うならば、結果は実質的にランダム分布です。

注。 All ThreadsがCSVデータセット構成に設定されていることを確認すると、データはJMeterプロセスの範囲内で一意になります。

7

これを達成するための別の方法があります:

  • はあなたが達成したいかに応じて、個別のスレッドグループ
  • を作成します。
    • (ランダム)ループ回数を追加 - >これが設定されますがワークを行うスレッドグループの開始オフセット。
    • ループカウントまたは永遠とタイマーを追加し、他のスレッドグループが実行されている間にループさせます。このスレッドグループが

「擬似」ランダム行を読み込みますそれは本当にランダムではありません、ファイルはまだ順番に読み込まれますが、あなたの仕事のスレッドがファイルにジャンプします。それは私のために働いた;-)

0

他の答えが述べたように、あなたが非効率なメモリにファイル全体を読む必要があるため、ランダムに行を選択できない理由があります。

JMeterにこの問題を処理するのではなく、テストを開始する前にファイル順序自体をランダム化してみませんか?

cat unrandom.csv | perl -MList::Util=shuffle -e 'print shuffle<STDIN>' > random.csv 
0

くらいまっすぐ進むソリューション:

Perlなどのスクリプト言語は、この短い作品を作ります。 CSVファイルで、列Bの最初のセル(B1など)に別の列(たとえばB) apply = RAND()関数を追加します。これにより、ランダムな浮動小数点数が作成されます。 対応するすべてのURLを適用するには、セル(B1)コーナーをドラッグします。 列Bを並べ替えます。 URLはランダムにソートされます。 列Bを削除してください。

関連する問題