JMeterによる負荷試験 その1 導入から実行まで
JMeterとは
Apache Jmeter。Jakarta Projectにおいて開発されているソフトウェア。
クライアントサーバシステムのパフォーマンス測定/負荷試験を行えるツールです。
オープンソースで開発されているので、無償で利用することができます。
WebアプリケーションとWebサーバの性能測定に利用されています。
Javaで書かれているのでWindowsやLinuxでも環境依存せずに利用できます。
負荷をかけるだけではなくレスポンスの確認もできるので、"ある一定の負荷をかけた場合に、応答を正確に返せるか"といった検証が可能です。
JMeterの動作
インストールから簡単なテストシナリオの作成、結果の見方までを紹介します。
私は手元にあるWindowsマシンのJMeterでテストシナリオを作成し、それをlinuxサーバで実行するという方法を行っています。
以下にLinuxでのインストール方法を記載します。
インストール
Javaで書かれているのでJ2SDK1.4以上が必要です、
JDKを以下のサイトから入手してきましょう。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
実行権の付与
chmod +x /home/work/jdk-6u27-linux-x64-rpm.bin
実行
./jdk-6u27-linux-x64-rpm.bin
export JAVA_HOME=/usr/java/default
確認
java -version java version "1.6.0_27" Java(TM) SE Runtime Environment (build 1.6.0_27-b07) Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)
JMeterの入手
以下のサイトから最新版をダウンロードしてきましょう。
http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi
展開と設置
tar zxvf jakarta-jmeter-2.5.tgz mv jakarta-jmeter-2.5 /usr/local/ ln -s /usr/local/jakarta-jmeter-2.5 /usr/local/jmeter
これだけでOKです。
Windowsでのインストールもほとんど同じ流れです。
JDKをインストールし、jmeterを展開、フォルダに設置するだけです。
起動するときは、bin\jmeter.batを実行します。
テストシナリオの作成
(Windows)
bin\jmeter.batを起動させると以下のような画面が表示されます。
この画面からテストシナリオを作成していきます。
まずは、「あるページに、1人の人が訪れる」というテストシナリオを作成したいと思います。
「テスト計画」を右クリックして、「追加」→「Threads(Users)」→「スレッドグループ」を選択します。
これでスレッドグループが追加されました、
追加したスレッドグループをクリックすると、スレッドプロパティ画面が右側に表示されます。
スレッド数のところに「1」を入力します。
このスレッド数は想定するユーザ数に値します。
次にHTTPリクエストの設定を行います。
「スレッドグループ」を右クリックして、「追加」→「設定エレメント」→「HTTPリクエスト初期値設定」を選択します。
[サーバ名またはIP]のところにテストするサーバのIPアドレスを入力します。
HTTPリクエスト処理を行う為にサンプラーを追加します。
「スレッドグループ」を右クリック「追加」→「サンプラー」→「HTTPリクエスト」を選択します。
[パス]にリクエストを送るページ名(プログラム名)を指定します。
サーバ名とIPアドレスは先ほどの初期設定の値が利用されるので、空欄で大丈夫です。
テストした結果を保存するリスナーを設定します。
「スレッドグループ」を右クリック→「追加」→「リスナー」→「統計レポート」を選択します。
結果をファイルに保存したい場合はファイル名を入力しましょう。
項目名 | 意味 |
---|---|
Samples | サンプル数(実行回数) |
Average | サンプルの合計の平均値 |
Median | サンプルの中央値 |
90% Line | サンプルの90%はこの値よりも低くなる値 |
Min | 最小値 |
Max | 最大値 |
Error | サンプル内の何%がエラーになったか(今回はアサーション設定してないので関係なし) |
Throughput | 単位あたりの処理数 |
KB/Sec | 秒間に何KB処理したか |
↑間違っていたら教えてください。
テストファイルの保存
「ファイル」→「テスト計画を名前をつけて保存」を選択しjmxファイルを保存してください。
テスト実行
先ほど作成したjmxファイルをJMeterを入れたLinuxに転送してください。
cd /usr/local/jmeter/bin chmod +x jmeter ./jmeter -n -t /tmp/test.jmx
-n オプションはNON-GUIモードでJMeterを実行するオプションです。
-t オプションで実行するjmxファイルを指定できます。
これでJMeterの実行が可能です。
今回は"一人のユーザがindex.phpに一回アクセスする"というだけなので、すぐに実行は終わると思います。
これで一番簡単なテストは完了しました。
次にアサーションの設定をしてみましょう。
アサーションとは、テストしているサーバからの応答を検査し、その応答が正しいものかどうかをチェックするためのものです。
例えば先ほどのindex.phpは、「ようこそ!」と表示するプログラムだったとします。
アサーションを設定しなかった場合、ちゃんと「ようこそ!」が表示されていたかどうかを確認する術はありません。
もしかしたら、ある一定の負荷を超えると、503エラーが帰っていたかもしれません。
ちゃんと「ようこそ!」が表示されているかを確認する為にアサーションを追加します。
「スレッドグループ」→「追加」→「アサーション」→「アサーション」
テストパターンの部分に検査したい文字列を入力しましょう。
今回は「ようこそ!」が帰っているかを確認するので、そのように入力してください。
リスナーも追加しておきましょう。
「スレッドグループ」→「追加」→「リスナー」→「アサーション結果」
アサーション結果を使えば、サーバからの応答の内容まで確認できるので便利です。
とりあえず今日はここまで。