webサーバ性能評価(JMeter)
2010/1/25
webサーバ性能評価
webサーバを設置して久しいが、最近は処理能力に不安を感じることがある。
メモリは192MBであるとかCPUがDuron 800MHzであるとか、最近のマシンに比べると相当に見劣りする。
近い将来、仮想化によりサーバの統合を考えているが、統合したサーバと現在のサーバとの間にどの程度の能力差があるか比較してみたい。
インストール
JMeterを使うにはJRE(JDK)が必要になる。
su -
mkdir Download; cd Download
mkdir jdk-6u18;cd jdk-6u18
wget http://nt.hakodate-ct.ac.jp/~takahasi/download/linux/java/jdk-6u18-linux-i586-rpm.bin
sh ./jdk-6u18-linux-i586-rpm.bin
JMeter本体は、ユーザのホームディレクトリにインストールする。
echo "export JAVA_HOME=/usr/java/default" >> ~/.bashrc
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> ~/.bashrc
echo "export CLASSPATH=.:\$JAVA_HOME/lib/tools.jar" >> ~/.bashrc
wget http://ftp.kddilabs.jp/infosystems/apache/jakarta/jmeter/binaries/jakarta-jmeter-2.3.4.tgz
tar xvfz jakarta-jmeter-2.3.4.tgz
cd jakarta-jmeter-2.3.4/bin
LANG=C ./jmeter
JMeterが起動した。
設定
- スレッドグループを作成する。

サーバへアクセする条件を設定する。
- スレッド数 15
同時にアクセスするユーザは15人
- ループ回数 10
テストは10回

- httpプロキシサーバ
シナリオを作る。シナリオはxmlで作成してもよいが、Jmeterの機能を使うと簡単なシナリオを作ることができる。
httpプロキシサーバをJMeter内に用意し、webブラウザからのリクエストを記録し、シナリオとする。

記録するリクエストを指定することができる。
画像(jpg,gif,...)に対するリクエストを除外したいときは、"URL Patterns to Exclude"に"*.jpg"等を記載する。
Startボタンを押して、httpプロキシサーバを起動する。

- webブラウザの設定を変更する。JMeter内プロキシサーバをwebブラウザが使用するhttpプロキシサーバに指定する。

プロキシを設定する。
プロキシはlocalhostを指定し、ポートは8080にする。

- webブラウザがアクセスしたページがThread Groupに追加される。

- 表示方法を指定する。
総合的な結果はSummary Reportを指定する。

レスポンスの時間変化はGraph Resultを指定する。

- 設定を保存する。

測定
- 測定はメニューから[Run]-[Start]を選択する。

- 総合的な結果はSummary Reportとして表示する。

レスポンスの時間変化はGraph Resultsとして表示する。
アクセス数が増えるに従い、スループットが伸びている。
リクエストに対して遅延はほとんどないことがわかる。

ユーザ数が多くなると、スループットは減少する。
ほとんどの場合、リクエストに対する遅延はないが、ときどき大きな遅延が発生する。
さらにリクエストが増えると正しく応答できなくなり、エラーが発生する。

スクリーンショット
メニューから[Edit]-[Save Node As Image]または[Save Screen As Image]を選択するとスクリーンショットを撮ることができる。

Save Node As Imageはグラフ部分だけをイメージとして保存できる。

Save Screen As ImageはJMeter全体をイメージとして保存できる。

結果
SPEC | 測定条件 | Throughput | Max | Error % |
Duron 800MHz RAM192MB | 15Thread 10回 | 239.8/Sec | 48.49 | -- |
60Thread 10回 | 134.3/Sec | 15209 | -- |
120Thread 10回 | 127.6/Sec | 34367 | -- |
240Thread 10回 | 48.4/Sec | 244176 | 3.21 |
240Thread 1回 | 122.0/Sec | 7392 | -- |
参考
@IT 実用 Apache 2.0運用・管理術 第2回 JMeterによるWebサーバ性能評価の勘所