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が起動した。
JMeter初期画面

設定

  1. スレッドグループを作成する。
    スレッドグループを追加

    サーバへアクセする条件を設定する。 Thread Properties

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

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


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


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


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


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


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


  6. 設定を保存する。


測定

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


  2. 総合的な結果は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/Sec2441763.21
240Thread 1回 122.0/Sec7392--

参考
@IT 実用 Apache 2.0運用・管理術 第2回 JMeterによるWebサーバ性能評価の勘所