こんにちは、ロジカル・アーツの井川です。
今回は負荷テストを行ってみました。
負荷テストとはシステムがどの程度のアクセスに耐えられるかを確認するためのテストです。
システムがどの程度のアクセスまでなら十分なパフォーマンスがだせるかを把握しておけば、事前に備えておくことができます。
システムに負荷を掛けるにはツールを使う方法が簡単です。
負荷テストツールはいくつか種類がありますが、その中でも最もポピュラーな「JMeter」というツールを使った方法をご紹介します。
JMeterのダウンロード
まずは「JMeter」をダウンロードします。以下のURLにアクセスします。
「Download Releases」に移動します。

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

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

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

「jmeter.bat」を実行すると、

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

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

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

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

以下の項目を入力します。
| 項目 | 値 |
|---|---|
| プロトコル | http |
| サーバ名またはIP | 負荷テスト対象サーバのIPアドレス |
| ポート番号 | 80 |
リクエストのデフォルト値を設定します。
今回は対象サーバの80番ポートに対してhttpでリクエストすることをデフォルト値として設定しました。

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

以下の項目を入力します。
| 項目 | 値 |
|---|---|
| パス | /index.html |
アクセスするパスを設定します。

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

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

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

パフォーマンス計測
パフォーマンス計測はJMeterのGUIで実行する方法と、コマンドラインで実行する方法があります。
GUIで実行する方法は、GUIがボトルネックとなり正しい結果が得られない可能性があるため、基本的にはコマンドラインで実行します。
コマンドプロンプトを起動します。
binフォルダに移動して以下のコマンドを実行します。
> jmeter -n -t ./test_igawa.jmx -l ./result_test_igawa.jtl
テストが終了したらGUIで結果を確認します。
統計レポートの「ファイル名」でテスト結果のresult_test_igawa.jtlを参照します。

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