負荷テスト・パフォーマンス測定ツールのJMeterのインストールと簡単な使い方


JMeterについて

Apache JMeterは、負荷テストとパフォーマンスを測定するためのオープンソースのJavaアプリケーションです

JMeterを使うとサーバーに対して、秒間1万リクエストなどの負荷をかけ、その応答時間などの指標を見ることでのパフォーマンスを測ることができます

なんでJMeterを使うの?

負荷テストツールには、ab(Apache Bench)やhttperfのようなコマンドラインから使うシンプルなものもありますが、JMeterではブラウザ辿ったページを記録して、それに対して負荷テストをしたり、CSRFトークンなどの情報をリクエストを簡単に付与できたりと詳細な設定をして負荷テストを行いたい場合に使用します

JMeterの導入

JMeterのインストールと基本的な使い方について紹介いたします

JMeterをインストール

JMeterのバイナリファイルをApacheの公式サイトからダウンロードしてきて、解凍します

ダウンロードしたファイルをアプリケーションフォルダに移動して、JMeterのjarファイルを起動します
*JMeterはJavaアプリケーションなので、必ずjavaをインストールしてください

Terminal
# アプリケーションフォルダに移動
$ mv ~/Downloads/apache-jmeter-2.13 /Applications

# JMeterを起動
$ java -jar /Applications/apache-jmeter-2.13/bin/ApacheJMeter.jar 

次のような画面が表示されれば、JMeterの起動に成功です

まず簡単な負荷テストをやってみる

JMeterを使ってレスポンスタイムの簡単な負荷テストを行ってみましょう

スレッドグループの作製

テストを実行するためにはスレッドグループというのを作る必要があります
スレッドグループとは、あるページリクエストを投げるなどのテストの集合で、負荷テストの実行の1つの単位になります

それではスレッドグループを追加してみましょう 

サイドバーに表示されているテスト計画を右クリックすると色々な項目が出てきます
テスト計画(右クリック)>追加>Threads(Users)>スレッドグループを選択することによってスレッドグループを追加します

スレッドグループでは大きく分けて以下の3つの項目を設定することができる
・スレッド数
・Ramp-Up期間(秒)
・ループ回数
例えば、スレッド数を60, Ramp-Up期間を60、ループ回数を1とすると、 「60のスレッドを60秒かけて処理を行い、スレッドごとに1回だけ実行する」 という意味になります
つまり、スレッドを立ち上げる間隔というのは等しく生成されるので、1分間に1秒に1回のリクエストが投げられるということです

HTTPリクエストの作製

スレッド内で実行するテストを作成します
スレッドグループ(右クリック)>サンプラー>HTTPリクエストを選択することによってHTTPのリクエストを選択します

HTTPリクエストでは、負荷テストを行うURLやHTTPメソッド、リクエストに含めるパラメータなどを設定することができます
ここでは、 Webサーバ>サーバ名または IPに接続先のホスト名を入力します

リスナーを追加

負荷テストを行った結果を確認するためにリスナーをスレッドグループに追加します
リスナーとは、負荷テストの結果を表示するためのもので、グラフであったりツリー形式であったり必要な情報となるようなるものを追加しましょう
ここでは、 スレッドグループ(右クリック)>追加>リスナー>結果を表で表示を選択し、表で結果を表示するようにします

負荷テストの実行

上のツールバーのボタンより、負荷テストを実行します
第3者のWEBページに対して過度な負荷をかけて、サーバーを落としたりすると業務妨害などの罪に問われる可能性があるのでご注意ください

結果をみてみるとLatencyからリクエストを送ってサーバーが反応する時間レスポンスタイムを表し、SampleTimeではリクエストに対してデータをすべて取得するの要した時間を表しています

まとめ

上記でJMeterのインストールと簡単な負荷テストを行いました
JMeterの良さというのは、認証のような様々なリクエストを投げたり、条件分岐など詳細な負荷テストをする時に本領を発揮します

本記事では触れていませんが、色々なコントローラを追加したりHTTP以外のサンプラーなど使ってみてください