性能評価の方法
負荷試験の中で、最も利用頻度が高いのは「性能評価」ではないでしょうか。
性能評価を行うためには、次のことが重要になります。
- 見るべき指標
- スループットと平均応答速度の評価方法
- 性能の定義方法
それぞれについて詳細をまとめていきます。
見るべき指標
性能評価の負荷テストで見るべき指標は、
- スループット(pv/s)
- 平均応答速度
の2つになります。
スループットは、秒間あたりのアクセス数
スループットとは、秒間あたりのアクセス数を表します。単位は「pv/s」となります。pvとはページビューを表します。sは秒になります。
単位が、req/s(リクエスト/秒)ではなく、pv/s(ページビュー/秒)なところに注意が必要です。
システムの処理を受け持つサーバとしては、処理の最小単位はページビューではなく、リクエストになります。たとえば、トップページ(index.php)へアクセスしたとき、ユーザは1回のアクセスを行っていますが、実際のサーバへのリクエストとしては、
- index.php
- main.jpg
- logo.gif
- style.css
- base.css
- tool.js
のように複数のリクエストが発生しています。全てが1秒間で処理完了している場合、1pv/sまたは6req/sと表現します。
JMeterでは、シナリオに定義したリクエストを集計してスループットを算出します。main.jpgなどの静的コンテンツを取得したい場合は、index.phpの設定に「静的コンテンツを自動取得」する設定があるので、それを利用することで、pv/sのスループットを取得することが可能です。
反対にreq/sで取得したい場合は、シナリオに静的コンテンツの定義を入れる必要がでてきます。個人的にはシナリオが見づらくなるのでオススメしてません。
平均の応答速度
スループットと同様に見るべき指標は平均応答速度です。サーバ処理時間とも言い換えることもできます。
スループットと平均応答速度の評価方法
スループットは同時接続数との相関関係で評価する
スループットは、同時接続数(以下、スレッド数) との相関関係にて評価します。
スループットはキャパシティに余裕があるうちは、次のように線形に増加していきます。
- スレッド数1で1秒以内に応答あり:1pv/s
- スレッド数2で1秒以内に応答あり:2pv/s
- スレッド数3で1秒以内に応答あり:3pv/s
システムのキャパシティに近付いていくと、スループットの増加が鈍くなり、増加量がゼロに近づき一定になっていきます。この状態になった場所がシステムの限界スループットを判断することができます。
上の図で説明すると、スレッド数が6~8の部分でスループットがほとんど一定になっています。この場合、スループット6pv/s弱が限界ということができます。
平均応答速度もスレッド数との相関関係で評価する
平均応答速度は、スループットとは反対の挙動をしめします。
- スレッド数1:1s
- スレッド数2:1s
- スレッド数3:1s
- スレッド数10:1s
- スレッド数20:5s
- スレッド数30:7s
スレッド数1で1秒の平均応答速度とすると、スレッド2でも1秒の応答平均速度になります。スレッド数20で限界スループットになったとすると、平均応答速度は1秒より増加し5秒7秒と遅くなっていきます。
ボトルネックの発見
ボトルネックは、性能の頭打ちになっている原因のことです。ボトルネックについてチューニングをすることで性能向上を見込むことが可能です。言い換えると、ボトルネック以外の部分をいくらチューニングしても性能向上は見込めません。
ボトルネックは、限界スループット周辺の負荷をかけることで見つけ出すことができます。サーバのメモリやCPUの確認をすることでサーバ側のボトルネックを確認することができます。応答速度からは、特定PVのボトルネックが確認できます。
まとめ
性能評価を行うためには、次のことが重要になることを説明しました。
- 見るべき指標
- スループットと平均応答速度の評価方法
- 性能の定義方法
負荷テスト結果を意味あるものにするために、確認できる指標と、求められる性能の指標を合わせておくことが重要です。
この記事へのコメントはこちら