Featured image of post 【サーバーの耐久度チェック】JMeterでレッツ負荷テスト☆

【サーバーの耐久度チェック】JMeterでレッツ負荷テスト☆

1703文字

サーバー負荷テストとは?

基本はリクエスト数でチェック

システムWebサイトをリリースする際に、サーバーの負荷テストを行う必要があります。

負荷テストとはサーバーに対して特定のリクエストを大量に投げ、サーバーが落ちずにリクエストの処理を捌けるか?という観点で行います。

手動でやるのはアホらしいよね

しかし、このテストの際のリクエスト数の指標秒間数百〜数千リクエストを投げる必要があり、人力でやるのはとても無理があります。

そんな時に便利なのがJMeterです。

JMeterとは?

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

Macであれば、Homebrewによってコマンド一つでインストール可能なので、今回はインストールから簡単な使い方について紹介致します。

手順

前提

  • Javaインストール済み
  • Homebrewインストール済み
  • JMeterの言語環境は英語

JMeterのインストール

まずは、HomebrewでJMeterをインストールしましょう。

command
brew install jmeter

以下のログが出れば、インストール完了です。

command
brew install jmeter
==> Downloading https://homebrew.bintray.com/bottles/jmeter-4.0.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring jmeter-4.0.el_capitan.bottle.tar.gz
🍺  /usr/local/Cellar/jmeter/4.0: 2,339 files, 83.2MB

インストールはたったこれだけです。

JMeterの起動

では、実際にJMeterを起動してみましょう。
以下のコマンドを実行してください。

command
jmeter

以下のログが出力された上で、アプリケーションが起動されると思います。

command
jmeter
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use NON GUI Mode:
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================


使い方

スレッドグループの作成

JMeterを使ったテスト計画を作成するには、まずスレッドグループと呼ばれるものを作る必要があります。

スレッドグループとは、あるページURLへのリクエストを投げる、というテストの集合体の事で、負荷テストの実行の1つの単位になります。

左部メニューTest Plan右クリックをし、Add>Threads(Users)>Thread Groupを選択します。

すると、Test Planの子階層Thread Groupが追加されると思います。

スレッドグループの設定

次に追加したスレッドグループの設定を行いましょう。
左部メニューThread Groupを選択し、以下の項目を設定いてください。。

Number of Threads(users)リクエストを投げる際のスレッド数です。
スレッド数=ユーザー数=リクエスト数と置き換えて考えて良いでしょう。
Ramp-Up Period(in seconds)すべてのスレッドを投げ終える時間を指定します。
Loop Cound上記の設定のテストを何回繰り返すか?という設定になります。

今回は試しに、秒間5リクエスト2回行う設定にしてみました。

HTTP Requestの追加

次に実際に投げるリクエストの設定を行いましょう。
Thread Groupで右クリックをして、Add>Sampler>HTTP Requestを選択します。

すると、HTTP Requestの設定を行う画面が表示されるので、サーバー名リクエストを投げたいPathを入力してください。

[adsense]

実行

これで負荷テストを行う準備は出来ました。
上部メニュー再生ボタンをクリックします。

すると以下のようなダイアログが出ると思いますが、要はテスト計画を保存してね!という内容なので、Yesボタンをクリックしてください。

保存先ファイル名を入力してSaveボタンをクリックします。

すると、自動でテスト計画が実行されます。

リスナーを追加

しかし、実行結果が表示されるわけでもなく終わってしまいました。

テスト計画の結果を確認するには、リスナーを登録する必要があります。
リスナーとは、テスト計画の実行結果をグラフやツリーなどの様々な形式で表示するためで設定になります。

左部メニューThread Group右クリックをして、Add>Listener>View Result Treeを選択します。

すると、左部メニューView Result Treeが追加されました。
特に設定は不要なのでもう一度実行してみましょう。

再実行

もう一度実行した上で、先ほど追加したView Result Tree画面を見ていると、実行結果が追加されていると思います。

終わりに

以上のように、Homebrewを使えばインストールはコマンド一発ですし、テスト計画も直感的かつ簡単に設定及び実行をする事が出来ます。

適切なサーバースペックを用意する事が無駄の無い良いWebシステムの構築に繋がるので、必ずJMeterで負荷テストを行うように心がけましょう♪