38
an Introduction to JMeter JMeter 入門 @tikemin 131226日木曜日

JMeter入門

Embed Size (px)

DESCRIPTION

JMeter初心者向け(超入門編)

Citation preview

Page 1: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

JMeter 入門

@tikemin

13年12月26日木曜日

Page 2: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

突然ですが■こんなケースありませんか?○Webページがどの程度のアクセス(負荷)に耐えられるのか知りたい(または、どの程度性能か)

•ユーザ数•単位時間•連続アクセス数

13年12月26日木曜日

Page 3: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

負荷テスト■どうやって?○ブラウザ大量に開いて5F連打(゜ロ゜!!)

→指が疲れる○大量の人を、日本全国にちりばめて一斉アクセス

→コストがかかる(人、お金、場所etc.)■どちらも、再現性がない

13年12月26日木曜日

Page 4: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

負荷テストツール■JMeter(GUI/Free)→今日はコレ■OpenSTA(GUI/Free)■Load Impact(GUI/Shareware)■curl-loader(CUI/Free)■ab(CUI/Free)

13年12月26日木曜日

Page 5: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

JMeterとは??■Java製のアプリケーション(OSS)

■もともとはWeb用の負荷テストツール

■HTTP/HTTPS/SOAP/FTP

■JDBC/LDAP/Mailなどのテストも可能

13年12月26日木曜日

Page 6: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

JMeterとは?

13年12月26日木曜日

Page 7: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

JMeterとは?■テスト計画:1つのテストの内容■シナリオ:スレッドグループ(詳細は後述)■サンプラー:スレッドグループ内の1つのリクエスト(または、アクセス)

テスト計画(1):シナリオ(n):サンプラー(m)

13年12月26日木曜日

Page 8: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習■では実際に手をうごかしてみましょう

まずは、JMeterを起動してください

■ダウンロードは公式サイトからhttp://jmeter.apache.org/usermanual/best-pract

13年12月26日木曜日

Page 9: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

JMeterの画面

13年12月26日木曜日

Page 10: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

JMeterとは?■テスト計画:1つのテストの内容■シナリオ:スレッドグループ(詳細は後述)■サンプラー:スレッドグループ内の1つのリクエスト(または、アクセス)

それぞれを作成します

13年12月26日木曜日

Page 11: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

Hello JMeter■スレッドグループを追加する

13年12月26日木曜日

Page 12: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

Hello JMeter■サンプラーを追加

13年12月26日木曜日

Page 13: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

Hello JMeter■リスナー追加

13年12月26日木曜日

Page 14: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習1■JMeterを使って1から10ページ目までのアクセスにかかる時間を計測してみましょう!(※制限時間10分)

■対象サイト○ Google, Yahoo, 自分のサイト etc.

下のボタンで実行

13年12月26日木曜日

Page 15: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習1 解説■結果についての解説○ Sampler Result

Load time(ms)?

Latency(ms)?○リクエスト○応答データ

13年12月26日木曜日

Page 16: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

LoadTime/Latency

Client Server

Load

time

Latenc

y request

response

13年12月26日木曜日

Page 17: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

マルチスレッド■Webシステムは基本的にマルチスレッド○ JMeterでもマルチスレッド(多重)でリクエストを投げる事が可能

○スレッドグループの変更をする

13年12月26日木曜日

Page 18: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習2■演習1で作成したシナリオをマルチスレッドで実行してみましょう。(※制限時間5分)

13年12月26日木曜日

Page 19: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習2 解説■スレッド数→ユーザ数■Ramp-Up期間(秒)→単位時間■ループ回数→アクセス数

実際の環境に近い負荷テストが実行可能

13年12月26日木曜日

Page 20: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

JMeterのマルチスレッド

■数百単位のスレッドをWindowsで動かすときには注意が必要→出口(ポート)の最大数がレジストリで制限されてしまっている→そのためポートの最大数以上の負荷をかける事ができない

(参考)http://d.hatena.ne.jp/oreflow/20070906

13年12月26日木曜日

Page 21: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習3-1■次のプログラムのバグを発見してください○ ソースコードは以下からダウンロード

https://github.com/tikemin/Jmeterstudy

○ eclipseを起動してプロジェクトをデプロイ

○ その後、「localhost:8080/JMeterTest/sample01」へJMeterでアクセスして問題点を見つけてください

(※制限時間15分)

13年12月26日木曜日

Page 22: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習3-1 解説■スレッドの安全性○アクセス数を表示するプログラム

値→1

値→1

1+1→2

1+1→2

A

B

値→2

値→2

この時点ではまだ値が書き込まれていない13年12月26日木曜日

Page 23: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習3-2■演習3のプログラムの問題点を改善してください。(※制限時間5分)

13年12月26日木曜日

Page 24: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習3-2 解説■プログラムの先頭にSynchronizedをつける

1 protected synchronized void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {2 PrintWriter out = response.getWriter();3 out.println( ++userCount + "(Number of User)");4 }5

別のやり方もある

13年12月26日木曜日

Page 25: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

■プログラムの先頭にSynchronizedをつける

演習3-2 解説

値→1

値→2

1+1→2

2+1→3

A

B

値→2

値→3

読み込みと書き込みを同期化

13年12月26日木曜日

Page 26: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

ファイル読み込み■JMeterでは、外部(CSVファイルやXML)を読み込んでリクエストパラメータにする事が可能です

■リクエストパターンが大量にある場合はcsvファイル を利用したデータセットを作成することでメモリなどのリソースを削減できます

13年12月26日木曜日

Page 27: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

ファイル読み込み■スレッドグループに以下を追加します

13年12月26日木曜日

Page 28: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

ファイル読み込み■読み込むCSVの情報を設定します

13年12月26日木曜日

Page 29: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

ファイル読み込み■HTTPリクエストのパラメータとして使用○ ${<変数名>}とすることでパラメータとして利用可能

13年12月26日木曜日

Page 30: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習4■次は、ダウンロードしたファイル(sample03.csv)をリクエストパラメータにするように改良してみてください。(※制限時間10分)

13年12月26日木曜日

Page 31: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習4 解説■(簡単なので省略)

13年12月26日木曜日

Page 32: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

ファイル書き込み■JMeterでは、リクエストに対するレスポンス結果をファイル出力する事ができます

13年12月26日木曜日

Page 33: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

ファイル書き込み■ファイル書き込み時の設定一覧

13年12月26日木曜日

Page 34: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

ファイル書き込み■ファイル書き込み時の設定一覧

(参考)http://sy5.sakura.ne.jp/jmeter/ref/listener/saveresponsestoafile.html

13年12月26日木曜日

Page 35: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習5■演習4で作成したシナリオのレスポンス結果をファイルに保存するように改良してください(※制限時間10分)

13年12月26日木曜日

Page 36: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

演習5 解説■(簡単なので省略)

13年12月26日木曜日

Page 37: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

まとめ■JMeter○ Java製のGUIアプリケーション(OSS)○様々ななプロトコルに対応

HTTP/HTTPS/FTP/SOAP

JDBC/LDAP/Mail○テスト計画/シナリオ/サンプラー

13年12月26日木曜日

Page 38: JMeter入門

a n   I n t r o d u c t i o n   t o   J M e t e r

Reference■http://jmeter.apache.org■http://wiki.apache.org■http://amzn.to/1c88qHX

13年12月26日木曜日