JMeter を使用した性能テストや安定性テストを実施する際、目標となるスループット(TPS)をどのように設定するかは非常に重要なプロセスです。ここでは、実務でよく使われる3つの算出モデルについて解説します。
1. 平均値に基づいた基本計算
最もシンプルで直感的な算出方法です。特定の期間内に発生した総リクエスト数を、その期間の総秒数で割ることで、1秒あたりの平均リクエスト数を求めます。
TPS = 総リクエスト数 / 総時間(秒)
例として、あるプラットフォームの1日あたりのページビュー(PV)が5万件である場合、これを総リクエスト数と仮定して計算します。
- 総リクエスト数 = 50,000 req
- 総時間 = 24時間 = 24 * 3,600秒 = 86,400秒
平均TPS = 50,000 / 86,400 ≈ 0.58 TPS
この結果から、テスト環境で最低 0.58 TPS を維持できれば、理論上の平均的な負荷には対応できるという目安になります。
2. 二八の法則(パレートの法則)による算出
実際のトラフィックは1日を通して均等に発生するわけではなく、特定の時間帯に集中する傾向があります。「80%のリクエストが、全時間の20%の時間帯に発生する」という「二八の法則」を適用することで、より現実に近い負荷を見積もることができます。
TPS = (総リクエスト数 * 80%) / (総時間 * 20%)
先ほどの5万リクエストの例を当てはめると、以下のようになります。
- 対象リクエスト = 50,000 * 0.8 = 40,000 req
- 集中時間帯 = 86,400 * 0.2 = 17,280秒
予測TPS = 40,000 / 17,280 ≈ 2.31 TPS
二八の法則を用いることで、平均値よりも約4倍高い、より現実的な目標値が得られます。一般的なシステム運用のキャパシティプランニングでは、この値がよく参考にされます。
3. 特定イベントやピーク時を想定した算出
キャンペーン、クーポン配布、限定商品の販売など、特定の時間枠で急激にアクセスが増加するシナリオでは、そのイベント期間に絞ったデータが必要です。例えば、180分間のイベント期間中に5万リクエストが集中する場合を考えます。
まず、イベント期間全体の時間(秒)を算出します。
イベント総時間 = 180分 * 60秒 = 10,800秒
ここでさらに、イベント期間内でも特定の瞬間にアクセスが集中すること(スパイク)を考慮し、イベント時間内に対して二八の法則を適用します。
- ピークリクエスト数 = 50,000 * 0.8 = 40,000 req
- ピーク発生時間 = 10,800秒 * 0.2 = 2,160秒
ピーク時目標TPS = 40,000 / 2,160 ≈ 18.5 TPS
※元の計算例で158分(9480秒)を基準とする場合:
ピーク時目標TPS = (50,000 * 0.8) / (9,480 * 0.2) = 40,000 / 1,896 ≈ 21.1 TPS
このように、業務特性やユーザー行動を分析して算出された TPS(例: 約21 TPS)を、安定性テストやストレステストの実行パラメータとして設定することで、システムがピーク負荷に耐えられるかどうかを検証できます。