負荷テスト、みなさんは負荷を掛けるシナリオを作成されたことはあるでしょうか。 鎌田です。
第二回目ということで、「シナリオ作成」について触れたいと思います。
計画が決まったら、負荷を掛けるためのシナリオ作りをします。 多くの場合、Apache Jmeterを使われるかと思いますので、今回はJmeterの使い方について説明しましょう。 以下、WindowsのEC2インスタンスがパブリックサブネットに構築されている前提で説明をしています。
Jmeterに必要なもの Javaのインストール
JmeterはJavaでコーディングされ、Windowsであればexeが、Linuxであればtar.gzが提供されています。 Jmeterをインストールする前に、Javaをインストールしておきましょう。
※本ブログでは、Windows版で説明を進めます
OracleのJSEダウンロードページで、最新版をダウンロードしてインストールします。
https://www.oracle.com/technetwork/java/javase/downloads/index.html
インストールが終わったら、JavaのPATHを通しておきます。 環境変数を開いて設定しましょう。
環境変数設定後は、一旦Windowsからログオフして、再度ログインを行ってください。
Jmeterをインストール
Javaがインストールできたら、次はJmeterのインストールです。 Jmeterのダウンロードページよりzipファイルをダウンロードの上、zipファイルを解凍しましょう。
https://jmeter.apache.org/download_jmeter.cgi
シナリオ作りの事前準備
さあ、シナリオ作りの準備ができました。 と言いたいところですが、Jmeterでシナリオを作る際は事前準備が必要です。その手順を説明します。
heap memoryの調整
heap memoryを調整しておかないと、Javaが使うメモリ量が足りなくなり、シナリオ作成中のJmeterが止まってしまうことがあります。 jmeter.batの150行目設定を変更し、メモリ量を増やしておきましょう。
変更前
set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
変更後
set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=1024m
Jmeterを起動
Jmeterを起動します。 Windows版であれば、jmeter.batをダブルクリックすると、Jmeterが起動します。
デフォルトでは英語で起動するため、気になる方は日本語に設定してご利用ください。
Jmeterのプロキシサーバーを起動する
シナリオ作成を一番簡単に実施できるのは、Jmeterのプロキシサーバー機能を利用することです。 この機能を利用することで、負荷テストを実施したいURLをアクセスしていくだけで、負荷テストのシナリオが出来上がります。
まず、テストを記録するグループを作成します。 左ペインのTestPlanを右クリックし、追加→Threads(Users)→スレッドグループ の順に進み、クリックします。 このスレッドグループの下に、アクセス負荷を掛けるURLが記録されていきます。
次に、左ペインのTestPlanを右クリックし、追加→Non-Testエレメント→HTTPプロキシサーバーの順に進み、クリックします。 これで、プロキシサーバーの機能がJmeterに追加されます。
ここで、対象となるコントローラの設定で、「Test Plan > スレッドグループ」を設定しておくと、スレッドグループの下に記録されていきます。
開始をクリックして、記録を開始しましょう。
証明書のエラーが出ますが、OKで進んでください。
ブラウザにプロキシサーバーの設定を実施する
Jmeterで起動したプロキシサーバーを、ブラウザが利用するように設定します。 以下、Chromeの手順を記載しておきますが、ご利用のブラウザに合わせて設定を行ってください。
chromeの右上にある…の部分をクリックし、設定をクリックします。
システムのセクションの中に、「パソコンのプロキシ設定を開く」という項目があるのでクリックします
手動プロキシ セットアップの項目で、下記の通りに設定します。
設定項目 | 設定値 |
---|---|
プロキシサーバーを使う | オン |
アドレス | 127.0.0.1 |
ポート | 8888 |
設定が終わったら保存をクリックします。 ここまでで、事前準備が出来ました。
実際に負荷を掛ける通りにアクセスする
ここまで来たら、実際に負荷を掛けるシナリオ計画パターン通りにブラウザでアクセスをしていきます。次のような形で記録されていきます。
アクセスが終わったら、名前を付けて保存します。 複数のアクセスパターンがある場合、アクセスパターンごとにシナリオを作成することをオススメします。
これで、シナリオが作成できました。
まとめ
Jmeterを中心に、負荷を掛けるシナリオ作成について説明しました。 さあ、負荷を掛けてみましょう、と言いたいところですが、ちょっと待ってください。 AWSで負荷を掛ける場合、AWSのルールを守らなくてはなりません。 次のブログでは、AWSで負荷テストを実施する際に押さえておきたいルールについて、まとめておきたいと思います。