こんにちは、年のせいか最近、赤身肉の方が好きな新人です。年齢は非公開です。
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カラム目まででランダムでという事になります。
では動作テスト
スレッド数は10でリクエストのパスがランダムになっているか確認します。
※今回はダミーデータですのでレスポンスは443になっています。
ランダムにパスが選択されてリクエスト投げているのを確認できました。
ということで1000個のコンテンツのパス情報をCSVに分割して10個程度用意して
同じ要領のサンプラーを10個ほど乱数コントローラ配下に置きます。
CSVを分散させるのはCSVRead関数で大きなCSVを読み込ませるとメモリ不足になりましたので
カラム数は適度なサイズで作成すると良いんではとの結論からです。
乱数コントローラをコピペして5個用意すれば1000個のコンテンツの内、5個をランダムにGETするシナリオ完成となりました。
※下の画像は2スレッドを実行した結果です。見事にランダムなリクエストが2×5で10個作成されました。
ちなみに今回のランダムなパスを作成する手順ですが変数にCSVからランダムにカラムを読み込んでいるだけですので
ユーザーデータやPOSTパラメータなどにも応用可能です。
ということで今回はここまでバイバイ
投稿者プロフィール
-
2014年6月からスカイアーチに入社しました新入りのおっさんです。
雑食な性格ですのでその時の気分で記事を投稿していきたいと思います。
最新の投稿
- 負荷試験2015年12月15日Jmeterを使用した負荷試験でのちょっとした注意点
- Windows2015年4月20日Windowsサーバーの脆弱性について検証してみた(CVE-2015-1635)
- Linux2015年1月28日glibc脆弱性(GHOST) CVE-2015-0235のご連絡
- AWS2014年9月18日Windows Server 2008 on AWS ~時刻同期の罠~