20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
JMeter入門
1. 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日木曜日
2. 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日木曜日
3. 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日木曜日
4. 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日木曜日
5. 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日木曜日
6. 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日木曜日
7. 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日木曜日
8. 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日木曜日
9. 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日木曜日
10. 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日木曜日
11. 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日木曜日
12. 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日木曜日
13. 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日木曜日
14. 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分)
下のボタンで実行
■対象サイト
○
13年12月26日木曜日
Google, Yahoo, 自分のサイト etc.
15. 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日木曜日
リクエスト
応答データ
16. a n I n t r o d u c t i o n t o J M e t e r
LoadTime/Latency
13年12月26日木曜日
Latency
Load time
Client
Server
request
response
17. 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日木曜日
JMeterでもマルチスレッド(多重)でリクエストを投げ
る事が可能
スレッドグループの変更をする
18. 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日木曜日
19. 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日木曜日
20. 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日木曜日
21. 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日木曜日
22. a n I n t r o d u c t i o n t o J M e t e r
演習3-1 解説
■スレッドの安全性
○
A
B
アクセス数を表示するプログラム
1+1→2
値→1
値→1
値→2
1+1→2
値→2
この時点ではまだ値が書き込まれていない
13年12月26日木曜日
23. 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日木曜日
24. 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日木曜日
25. 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をつける
A
値→1
1+1→2
値→2
B
値→2
読み込みと書き込みを同期化
13年12月26日木曜日
2+1→3
値→3
26. 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日木曜日
27. 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日木曜日
28. 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日木曜日
29. 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日木曜日
${<変数名>}とすることでパラメータとして利用可能
30. 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日木曜日
31. 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日木曜日
32. 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日木曜日
33. 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日木曜日
34. 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日木曜日
35. 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日木曜日
36. 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日木曜日
37. 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日木曜日
テスト計画/シナリオ/サンプラー
38. 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日木曜日