Blogical

AWS/Salesforceを中心に様々な情報を配信していきます(/・ω・)/

JMeterを使ってみた

こんにちは、ロジカル・アーツの井川です。

今回は負荷テストを行ってみました。

負荷テストとはシステムがどの程度のアクセスに耐えられるかを確認するためのテストです。
システムがどの程度のアクセスまでなら十分なパフォーマンスがだせるかを把握しておけば、事前に備えておくことができます。

システムに負荷を掛けるにはツールを使う方法が簡単です。
負荷テストツールはいくつか種類がありますが、その中でも最もポピュラーな「JMeter」というツールを使った方法をご紹介します。

JMeterのダウンロード

まずは「JMeter」をダウンロードします。以下のURLにアクセスします。

jmeter.apache.org

「Download Releases」に移動します。

f:id:logicalarts:20200127144418p:plain

「Binaries」のzipファイルをダウンロードし、任意のフォルダに解凍しましょう。

f:id:logicalarts:20200127144446p:plain

解凍するといくつかフォルダがありますね。今回は主にbinフォルダを使っていきます。

f:id:logicalarts:20200129140434p:plain

テスト計画の作成

JMeterでテストを行うには「テスト計画」の設定が必要です。 設定はGUIで行うことができます。binフォルダに移動して「jmeter.bat」を実行してみましょう。

f:id:logicalarts:20200129142539p:plain

jmeter.bat」を実行すると、

f:id:logicalarts:20200127144513p:plain

GUIが起動できました。
続けてOptions > Choose Language > Japaneseで言語を日本語に変更しておきます。

f:id:logicalarts:20200127144529p:plain

まずは「スレッドグループ」を作成します。

テスト計画を選択した状態で編集 > 追加 > Threads(Users) > スレッドグループを選択します。

f:id:logicalarts:20200127144604p:plain

スレッドグループではアクセスするユーザ数にあたる情報を設定します。 以下の項目を入力します。

項目
名前 test_igawa
スレッド数 10
Ramp-Up期間(秒) 5
ループ回数 1

スレッド数はアクセスするユーザー数にあたる項目です。
Ramp-Up期間(秒)は設定したスレッド数を生成する期間です。
どのぐらいの期間で何人のアクセスを想定するか、という観点の設定ですね。
今回は5秒かけて10人のユーザがアクセスするイメージで設定してみたいと思います。

f:id:logicalarts:20200127144646p:plain

続いてスレッドグループを選択した状態で編集 > 追加 > 設定エレメント > HTTPリクエスト初期値設定を選択します。

f:id:logicalarts:20200127144721p:plain

以下の項目を入力します。

項目
プロトコル http
サーバ名またはIP 負荷テスト対象サーバのIPアドレス
ポート番号 80

リクエストのデフォルト値を設定します。
今回は対象サーバの80番ポートに対してhttpでリクエストすることをデフォルト値として設定しました。

f:id:logicalarts:20200127144739p:plain

続いて再びスレッドグループを選択した状態で編集 > 追加 > サンプラー > HTTPリクエストを選択します。

f:id:logicalarts:20200127144751p:plain

以下の項目を入力します。

項目
パス /index.html

アクセスするパスを設定します。

f:id:logicalarts:20200127144807p:plain

続いて再びスレッドグループを選択した状態で編集 > 追加 > リスナー > 統計レポートを選択します。

f:id:logicalarts:20200127144825p:plain

統計レポートが表示されました。
負荷テストの結果はこの統計レポートから確認ができます。

f:id:logicalarts:20200127145633p:plain

これで準備が整いました。
テスト計画(jmxファイル)をbinフォルダ配下に保存します。

f:id:logicalarts:20200127144845p:plain

パフォーマンス計測

パフォーマンス計測はJMeterGUIで実行する方法と、コマンドラインで実行する方法があります。
GUIで実行する方法は、GUIボトルネックとなり正しい結果が得られない可能性があるため、基本的にはコマンドラインで実行します。

コマンドプロンプトを起動します。
binフォルダに移動して以下のコマンドを実行します。

> jmeter -n -t ./test_igawa.jmx -l ./result_test_igawa.jtl

テストが終了したらGUIで結果を確認します。
統計レポートの「ファイル名」でテスト結果のresult_test_igawa.jtlを参照します。

f:id:logicalarts:20200127145053p:plain

結果が確認できました!!

まとめ

今回の設定は簡単な内容でしたが、実際は予想されるアクセス数に合わせてスレッドの値を調整したり、ユーザのページ遷移に合わせてサンプラーを設定するなどの検討が必要になると思います。
システムのパフォーマンスを裏付けできるように、それぞれの項目が何に影響するパラメータなのか、しっかりと理解しておきたいと思いました。

この記事がどなたかのお役に立てば幸いです。

参考サイト