3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JMeterで負荷テスト

Posted at

ハマったところの忘備録と、意外と上から下まで説明した記事がなかったのでまとめ。

目的

JMeterで、負荷テストを行う。
1秒10アクセス。
https://hogehoge.jp/abc を対象とする
ベーシック認証付き
nuxt.js、API通信でバックエンドはLaravel
JMeterはMacで実施。

JMeterインストール

何はともあれJMeterをインストール。
brewで行います。brewがない場合はbrewをインストールしてね。

JMeterを使うには、本体とJavaが必要です。

brew install jmeter
brew tap homebrew/cask-versions
brew cask install java

javaはこれ書いている時点でバージョン14がインストールされましたが普通に使えました。

JMeterの実行

コンソールから実行します。

jmeter

するとGUIツールが開きます。この画面を使ってテスト計画(テストの内容)を作ります。

スクリーンショット 2020-06-10 17.49.17.png

日本語化

日本語にするにはメニューから以下を選択します。
Options > ChooseLanguage > Japanese

テスト計画の作成

左カラム設定

左カラムの「TestPlan」を右クリックで
追加 > Threads(Users) > スレッドグループ
を選択し、スレッドグループを作ります。

次に上記で出来た「スレッドグループ」を右クリックで
追加 > サンプラー > HTTPリクエスト
追加 > リスナー > 統計レポート
追加 > リスナー > 結果を表で表示
追加 > リスナー > 応答をファイルへ保存
追加 > リスナー > グラフ表示
を選択し、それぞれを作成します。
※結果を表で表示 より下3つは無くてもいいですが、結果が見やすいのであったほうが良いです。

するとこんな感じになります。

スクリーンショット 2020-06-10 17.57.05.png

スレッドグループの設定

テストを何秒おきに何回実行するかを決めます。
スレッド数:10
Ramp-UP期間(秒):1
ループ数:1

を設定します。
上記は10リクエストを1秒の間に実行するという意味になります。

HTTPリクエストの設定

左カラムのHTTPリクエストを選択し、情報を入力します。

設定項目 設定値
プロトコル https
サーバ名またはIP hogehoge.jp
HTTP リクエスト GET
パス /abc

ベーシック認証がある場合

HTTPリクエストで右クリックし
追加 > 設定エレメント > HTTP認証マネージャ
を選択し、作成します。

設定項目 設定値
基底URL https://hogehoge.jp/
ユーザ名 ベーシック認証のユーザ名
パスワード ベーシック認証のパスワード
Mechanism BASIC
スクリーンショット 2020-06-10 18.01.49.png

保存

TestPlanを選択してCtrl+sで保存します。
この後このファイルは使うのでわかりやすいところに保存します。

テスト

とりあえず動くかをテストします。
GUI上部の緑の△を押して実行します。
実行後、「結果を表で表示」を選択し、Statusが緑だったら成功です。

スクリーンショット 2020-06-10 18.17.04.png

JMeter実施

実施は、GUIではなくCUIで行います。
以下コマンドで実施。

jmeter -n -t ~/src/jmeter/test_plan.jmx -l ~/src/jmeter/log.jtl
# パスは保存したファイルの場所を設定して下さい。ログも適当な場所を指定して下さい。

ログの確認

ログの中身はこの様になっています。

cat ~/src/jmeter/log.jtl
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
1591777603078,21372,HTTP リクエスト,429,Too Many Requests,スレッドグループ 1-9,text,false,,347449,208,10,10,https://hogehoge.jp/abc,16242,0,238
1591777603178,21915,HTTP リクエスト,429,Too Many Requests,スレッドグループ 1-10,text,false,,353217,208,9,9,https://hogehoge.jp/abc,16151,0,220
1591777602975,24513,HTTP リクエスト,429,Too Many Requests,スレッドグループ 1-8,text,false,,358302,208,8,8,https://hogehoge.jp/abc,16689,0,211
1591777602877,25325,HTTP リクエスト,429,Too Many Requests,スレッドグループ 1-7,text,false,,346781,208,7,7,https://hogehoge.jp/abc,16539,0,175
1591777602578,29420,HTTP リクエスト,429,Too Many Requests,スレッドグループ 1-4,text,false,,623792,208,6,6,https://hogehoge.jp/abc,18709,0,308
1591777602353,30684,HTTP リクエスト,429,Too Many Requests,スレッドグループ 1-1,text,false,,623792,208,5,5,https://hogehoge.jp/abc,18968,0,533
1591777602676,30529,HTTP リクエスト,429,Too Many Requests,スレッドグループ 1-5,text,false,,623792,208,4,4,https://hogehoge.jp/abc,18419,0,210
1591777602378,30834,HTTP リクエスト,429,Too Many Requests,スレッドグループ 1-2,text,false,,623792,208,3,3,https://hogehoge.jp/abc,19032,0,508
1591777602776,30459,HTTP リクエスト,429,Too Many Requests,スレッドグループ 1-6,text,false,,623792,208,2,2,https://hogehoge.jp/abc,18681,0,168
1591777602477,30900,HTTP リクエスト,429,Too Many Requests,スレッドグループ 1-3,text,false,,623792,208,1,1,https://hogehoge.jp/abc,18591,0,409

ぐぬぬ・・これはlaravelのリクエスト数制限のせいですね。
この辺りの記事を参考に同時アクセス数を調整しましょう。
https://qiita.com/HorikawaTokiya/items/c04e410e4ed76d3dddc2

おしまい。ちゃんちゃん。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?