概要
負荷ツールで負荷をかける時の説明でよく見るのは
項目 | 計算式 |
---|---|
総テスト回数 | スレッド数×ループ回数 |
1秒あたりのリクエスト数 | 総テスト回数÷Ramp-Up |
ですが、例えば分間600アクセスを想定した時に
設定項目 | 値 |
---|---|
スレッド数 | 600 |
Ramp-Up期間 | 60 |
ループ回数 | 1 |
とした場合と
設定項目 | 値 |
---|---|
スレッド数 | 100 |
Ramp-Up期間 | 60 |
ループ回数 | 6 |
では先ほどの説明だとどちらも総テスト回数や1秒あたりのリクエスト数は同じです。
それぞれのケースの時にかかる負荷の違いが分からなかったので調べてみました。
環境
- JMeter 3.2
各用語の説明
スレッド数
JMeterが生成するクライアント数です。
スレッド数=アクセスするユーザ数と考えればOK。
Ramp-Up期間
設定したスレッド数を何秒以内に起動・実行するかの指定です。
例えばスレッド:10、ramp-up:100なら
- 全10スレッドを生成し実行するのに100秒かける
- 各スレッドは前のスレッドが開始されてから10秒(100 ÷ 10)毎に開始
となります。
ループ回数
1スレッド(1ユーザ)が1つのテストケースを何回繰り返すかの指定です。
これは前のテストケースが完了したらすぐ次のテストケースを実行します。
動作検証
簡単のため以下のように低い数値で検証してみます。
どれも20秒間に10リクエスト投げるというテストです。
テストA
設定項目 | 値 |
---|---|
スレッド数 | 10 |
Ramp-Up期間 | 20 |
ループ回数 | 1 |
テストB
設定項目 | 値 |
---|---|
スレッド数 | 5 |
Ramp-Up期間 | 20 |
ループ回数 | 2 |
テストC
設定項目 | 値 |
---|---|
スレッド数 | 2 |
Ramp-Up期間 | 20 |
ループ回数 | 5 |
結果
テストA
Ramp-Up / スレッド数=2
で2秒毎にスレッドが起動し、リクエストを1つ1つ均等に投げてます。
テストB
Ramp-Up / スレッド数=4
で4秒毎にスレッドが起動します。しかし先程と違って、各スレッドは1つ目のテスト終わったらすぐに2つ目のテストを実行します。
テストC
Ramp-Up / スレッド数=10
で10秒毎にスレッドが起動します。各スレッドがすぐに次のテストを実行するので、リクエストに偏りが起きていることが分かります。
まとめ
今回の検証によって
ことが分かりました。特に後者はRamp-upを短くすれば複数のリクエストが並行して投げられることになるので、均等に投げるよりは実際のユーザリクエストに近いのではないかと思われます。