思うように負荷がかけられない...。
過去二度三度jmeterを使って負荷試験を行うことがあったがいつもjmeterの設定値を決めるのに苦労する。
毎度計算式から試行錯誤するがいまいち期待する負荷にならない。
ターゲットスループットの設定が毎分単位なので、秒間のリクエスト数をねらった値にするのが度し難い。
おおまかな前提。
- awsにインスタンスを複数台立てて実施。
- serverに期待するスループット値を想定、秒間平均同値のリクエストを一定時間かける。
- スレッドグループの
スレッド数
・ループ回数
、定数スループットタイマ
を設定してリクエスト数を制御する。
いままで使っていた考え方。
- 一度のループで各サーバ各スレッド全体がなげる総リクエスト数が期待するスループット値と同等とする。
- ループの回数は試験時間と一スレッドに含まれるリクエスト数に依存する。
- 一分間で処理されるスレッドののべ数。 -> 定数スループットタイマの設定値。
比較的低いスループットを想定して行っている間はいいのだけど、値が大きくなるごとに(サーバにかかる負荷があがるごとに)処理待ちが発生してしまってうまくリクエスト数を伸ばせなかった。
ダメだった点。
一回のリクエストのレスポンスタイムを考慮していなかった。
だから比較的少量の負荷時はずれが少なかったが負荷があがるにつれズレが大きくなっていった。
nginxで処理が終わるようなものならある程度許容できる誤差かなともおもったが、phpで処理しているやつなんかは結構想定とずれて大変だった。。
今回新しく考慮した点。
- いままで 点 で考えていたリクエストを(レスポンスタイムを考慮して) 線 と考える。
新しい考え方で試験した結果。
- かなりの確度で想定値に近づいた。
- リクエストが気持ちよく伸びる。
- 想定値をあげても誤差はそこまで広がらない。
〆
以上の考え方で組んだ計算式をgithubにあげました。
https://github.com/yoko-chance/jmeter-calc
そのままいつでも使えるかどうかはわからないけど、参考になるところはしてもらえれば...。
他の人がどんな感じで値決めているのかが気になるところ。
この記事は 株式会社ソニックムーブ Advent Calendar 2017 7日目の記事です。
アドベントカレンダーはこっち。 -> https://qiita.com/advent-calendar/2017/sonicmoov
ソニックムーブについてはこっち。 -> https://www.sonicmoov.com