※これはくろふねの備忘録です。皆さんにはあまり関係のないことだと思います。
Jmeterで負荷生成を行う際(というかシナリオ作りだね)にいろいろとわからなかったことをくろふね用にまとめます。
PROXY環境ネットワークでJmeterを使用する方法
外部のサーバに対して負荷生成を行わなければいけないんだけど、そのネットワーク内にPROXYサーバがあるため、そのままでは負荷生成やシナリオが作成できない。
Jmeter起動時にオプションをつけましょう!
c:\jmeter\bin\jmeter.bat -H {PROXYサーバのアドレス} -P {PROXYサーバのポート} -u {PROXYサーバに対するユーザ} -a {PROXYサーバに対するパスワード}
例
c:\jmeter\bin\jmeter.bat -H 192.168.0.1 -P 8080 -u kurofune -a password
シナリオを作る際
シナリオをブラウザから読み込んで作成するには?
- まず[テスト計画]に[追加]−[スレッドグループ]を追加する。
- 次に[ワークベンチ]に[追加]−[Non-Testエレメント]−[HTTPプロキシサーバ]を追加する。
- [HTTPプロキシサーバ]を開き、ポートを設定する(デフォルトは8080)。
- ブラウザのPROXY設定にサーバ:localhost、ポート:{指定したポート}を設定する。
- [HTTPプロキシサーバ]の最下部にある開始ボタンをクリックする。
- ブラウザでシナリオ通りに動かす。
という操作で[スレッドグループ]に勝手に操作したシナリオが追加されていきます。
但し、そのままだとcssやjsファイルも読み込まれてしまうので、手で削除するか、[HTTPプロキシサーバ]の除外設定で*.css、*.js等除外しましょう。
セッションが引き継がれない
セッションが引き継がれなくてエラーになるんだけど?
HTTPクッキーマネージャを追加しましょう!
- [スレッドグループ]に[追加]−[HTTPクッキーマネージャ]を追加する。
そんだけ。それで勝手にJSESSIONID等のセッションを維持します。
サーバから渡されたIDを次ページに渡す
サーバから生成されるjavax.faces.ViewStateやCID、tokenを次ページに渡したいんですが・・・
正規表現抽出を使用しましょう!
- [スレッドグループ]または生成されるページに対し、[追加]−[後処理]−[正規表現抽出]を追加する。
- 参照名、正規表現、テンプレート、一致番号、初期値を指定する。
- リクエスト等、渡す場所に${参照名}を設定する。
例えばjavax.faces.ViewStatusなら以下のように正規表現抽出を行います。
参照名:
jsfStatus
正規表現:
<input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="(.+?)"
テンプレート:
$1$
一致番号:
0
初期値:
あとは${jsfStatus}を設定したい場所に追加するだけです。
注意として、半角スペース等がテンプレートに入ると余計な文字が付加されてしまうので注意しましょう。
シナリオを実行する前に
レスポンス時間や返却された情報、統計グラフを見たいんですが。
スレッドグループにリスナーを追加しましょう。
以下のようなリスナーを入れておくと便利。
- 統計レポート
- 結果をツリーで表示
- グラフ表示
スレッドグループの設定
スレッド数、Ramp-Up期間(秒)、ループ回数がよくわからない。
- スレッド数:ページにアクセスする数
- Ramp-Up期間(秒):何秒間でスレッド数に設定した数が動作するか
- ループ回数:1つのスレッドが何回シナリオを実行するか
という感じ
例えば
スレッド数 | 10 |
Ramp-Up期間(秒) | 60 |
ループ回数 | 10 |
とすると、60秒で10個のスレッドが立ち上がるので、6秒に1個スレッドが動きます。
1個のスレッドは10回ループさせると終了するという感じです。
なので10個のスレッドが同時に動くのは1分後ということです。但し、10回のループが数秒で終了してしまうと、最初のループは1分後には存在しないので、当然1分後の同時接続は10とはなりませんが。
その辺はうまく調整してやらないとダメです。