Upload
satoshi-takami
View
2.306
Download
1
Embed Size (px)
DESCRIPTION
JMeter初心者向け(超入門編)
Citation preview
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日
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日木曜日