基礎知識

性能評価の方法

2016/10/06

負荷試験の中で、最も利用頻度が高いのは「性能評価」ではないでしょうか。

性能評価を行うためには、次のことが重要になります。

  • 見るべき指標
  • スループットと平均応答速度の評価方法
  • 性能の定義方法

それぞれについて詳細をまとめていきます。

見るべき指標

性能評価の負荷テストで見るべき指標は、

  • スループット(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のボトルネックが確認できます。

まとめ

性能評価を行うためには、次のことが重要になることを説明しました。

  • 見るべき指標
  • スループットと平均応答速度の評価方法
  • 性能の定義方法

負荷テスト結果を意味あるものにするために、確認できる指標と、求められる性能の指標を合わせておくことが重要です。

-基礎知識