負荷試験(JMeter)をやってみた。その3(ランダムにページをGETする編)

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、年のせいか最近、赤身肉の方が好きな新人です。年齢は非公開です。

1000個のコンテンツ用意するからそのうち5個をランダムでGETするような負荷試験って出来ます?
というリクエストを頂きましたので

JMeterでランダムなページにアクセスするシナリオ作って試してみたよ編です♪

という事でさっそく色々調べてみました。

JMeterのコントローラ機能に「乱数コントローラ」「ランダム順序コントローラ」というなんだがランダムな感じのやつがおります。
それぞれの機能は
乱数コントローラ…コントローラ内のサンプラーがランダムに1回のみ実行される。
ランダム順序コントローラ…コントローラ内のサンプラーが順序がランダムに全て実行される。
要望的には乱数コントローラでいけるのですが、さすがに1000個もサンプラーを用意するのはしんどい

じゃあどうするかって事でgoogle先生に聞いてみたりしてみたところ、JMeterの関数でランダムという物があり
CSVを読み込ませてランダムにカラムを指定すればたくさんサンプラーを作成しなくてもいけるんじゃないという結論に。

ということで下記のような手順でテストです。
まずパスを記載するCSVファイルを作成します。
hoge1,hoge2,hoge3…….hoge100 1行に「,」区切りで取り合えず100個のパスを記載し
「urllist1.csv」というファイル名でJmeter保存ディレクトリ(フォルダ)内のbin配下に保存

サンプラーはこのように設定しパスがランダムになるように「${__CSVRead(urllist1.csv,${__Random(0,99,rndm)})}」と入力
※CSVRead関数で「urllist1.csv」を読み込み、Random関数で読み込むカラムを指定
Random(0,99,rndm)と記載したので1カラム目から100カラム目まででランダムでという事になります。
Jrandom

では動作テスト
スレッド数は10でリクエストのパスがランダムになっているか確認します。
※今回はダミーデータですのでレスポンスは443になっています。

random1 random2 random3
ランダムにパスが選択されてリクエスト投げているのを確認できました。

ということで1000個のコンテンツのパス情報をCSVに分割して10個程度用意して
同じ要領のサンプラーを10個ほど乱数コントローラ配下に置きます。
CSVを分散させるのはCSVRead関数で大きなCSVを読み込ませるとメモリ不足になりましたので
カラム数は適度なサイズで作成すると良いんではとの結論からです。

乱数コントローラをコピペして5個用意すれば1000個のコンテンツの内、5個をランダムにGETするシナリオ完成となりました。
※下の画像は2スレッドを実行した結果です。見事にランダムなリクエストが2×5で10個作成されました。
randomlast

 

ちなみに今回のランダムなパスを作成する手順ですが変数にCSVからランダムにカラムを読み込んでいるだけですので
ユーザーデータやPOSTパラメータなどにも応用可能です。

ということで今回はここまでバイバイ

 

 

 

 

投稿者プロフィール

tsubo
2014年6月からスカイアーチに入社しました新入りのおっさんです。
雑食な性格ですのでその時の気分で記事を投稿していきたいと思います。

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.

ABOUTこの記事をかいた人

2014年6月からスカイアーチに入社しました新入りのおっさんです。 雑食な性格ですのでその時の気分で記事を投稿していきたいと思います。