Comments
Description
Transcript
Apache JMeter
オ ー プ ン ソー ス カ ン フ ァ レン ス 2 0 0 6 Tokyo/ Fall Apache JM eterで 性能試験を しよ う ! 水野浩典 オ ー プ ン ソー ス ・コン ピ テ ン シ・セン ター 日本ヒ ュ ー レッ トパ ッ カ ー ド株式会社 2 0 0 6 年1 0 月2 8 日 © 2 00 6 Hewlett-Packa rd Development Compa ny, L.P. The informa tion conta ined herein is subject to cha ng e without notice 内容 • 性能試験の 重要性 • Apache JM eter • 性能試験方法 • APサ ー バ の チ ュ ー ニ ン グ の ヒン ト 2 1 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 性能・負荷試験の 重要性 • 必要な理由 − 性能・負荷試験は 、単体テ ス トや 結合テ ス トでは 発見す ること が 出来な か っ た 問題を見つ け るた め に 必ず 行う 必要が あ り ま す 。 • 必要な理由(そ の 2 ) − 実際に は 、想定外の 負荷が 掛か ること も考慮し、想定外の 負荷試験を 実施す ること も重要と なり ま す 。 • 本当の 理由 − シス テ ム の カ ッ トオ ー バ ー 後の 夜中や 休日に 、緊急に 呼び出され ない よ う に す るた め ! 3 平成18 年10 月3 0日 現実に 発生して い る 問題 • 性能試験が 、そ もそ も計画に 入っ て い ない 。 • 納期に 間に 合わ ない の で、機能試験は した が 性能試験ま で出来なか っ た 。 • 性能・負荷試験を実施す る に は 、商用製品が 必要なこと が 分か っ た が 、高い の で買え ない 。 • 試験ツ ー ル の 使い 方が 良く分か ら ない 。 • と り あ え ず 、性能・負荷試験をして みた が 、試 験結果が 正しい か よ く分か ら ない ? • 以前に 性能試験を してみ た が 、大変だ っ た の で出来れ ば や り た くない 。 • なん だ か 性能が 出ない . . . 4 2 性能・負荷試験の 重要性をプ ロ ジェ ク ト内で認識して 、実施す る よ うに し て 下さい 。 Fr e e で 使用でき る A p a ch e JM e te r を 御使用下さい 。 今か ら 、御説明致しま す 。 経験に よ る と ころも多い の です が 、性 能・負荷試験の セオ リ ー に つ い て 御 説明致しま す 。 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. Apache JM eter概要 JM eterと は JM eterは Jaka rta プ ロ ジェ ク トが 開発して い るパ フ ォ ー マ ン ス 計測 /負荷テ ス トツ ー ル オ ー プ ン ソー ス 、無償 1 0 0 % pure Javaなの でW indows、Linuxなど 、実行環境に 依存しない G UIを 用い て操作できる 大量の クラ イア ン トか ら の リ クエ ス の 生成/実行が 可能 HTTP(HTTPS)、デ ー タベ ー ス 、FTP、W EBサ ー ビ ス など の 様々なプ ロ トコ ル での パ フ ォ ー マ ン ス 検証が 可能 エ ラ ー 発生の 有無、期待した デ ー タが レ ス ポ ン ス に 含ま れて い るか の 確認など も簡単に 行う こと が 可能 W ebブ ラ ウ ザ 上で行っ た 操作を テ ス トの シナ リ オ と して記録し、そ れを テ ス ト・ス ク リ プ トと して 繰り 返し利用、簡単に 編集可能 6 3 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. w ebシス テ ム の 性能・負荷試験 w eb ブ ラウ ザ • • 通常、w eb シ ス テ ム に お い て は 複数の w eb ブ ラ ウ ザ か ら の 多く の リ ク エ ス ト を 送出 Lo a d Ba la n ce r 複数の ブ ラ ウ ザ の 代わ り に 、JM eterか ら 擬似的に リ ク エ ス トを 送出 A p a ch e W e b Se r v e r D a ta b a se Sto r a g e 7 平成18 年10 月3 0日 JM eterの 動作概要 実行 JM eterに テス トプ ラ ンを 設定して 、これを 実行す る テ ス トプ ラ ン 手動で作成す るか 、プ ロ キ シ機能を用い て 自動で作成 テ ス トプ ラ ンの 中で、生成す るス レッ ド数と 実行回数を指定 複数ク ラ イア ン トの 実行 Javaの ス レ ッ ドを用い て 、複数クラ イア ン トの 同時実行を 実現 Th re a d (Cli en t) テ ス トプ ラン *.jmx H TTPリ ク エ ス ト 測定対象の w eb サ ーバ 結果フ ァ イル *.jtl 8 4 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. Apache JM eter入門 JM eterの イ ン ス トー ル フ ァ イ ル を ダ ウ ン ロ ー ドし、適当なデ ィ レク トリ に 展開 す る だ け です 。 1 . JM e te rの ダ ウ ン ロ ー ド Jakartaサ イ トの 以下ペ ー ジよ り 最新の JM eterバ イナ リ をダ ウ ン ロ ー ド http: //jakarta. apache.org /site/binindex.cg i# jmeter_ binaries ※最新版は JM eter2 . 2です 。 ここでは jakarta-jmeter-2. 2 .zipを ダ ウ ン ロ ー ド 2 . JM e te rの イ ンス トー ル ダ ウ ン ロ ー ドした zip/tarフ ァ イ ル を JM eterをイ ン ス トー ル した い デ ィレ ク トリ に 展開 10 5 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. JM eterの 起動 JM eterを 展開してできた デ ィレク トリ に あ るbinデ ィレクトリ の JM eter起動フ ァ イル jmeter. ba t をダ ブ ル ク リ ッ ク して 下さい 。 jm e ter . b a t 正しく起動され て い れ ば 、コマ ンドプ ロ ンプ トと 以下の 通りの 画面が 表示されま す 。 テ ス ト計画 実際の テ ス トシナ リ オ を作成す る場所 ワ ー クベ ンチ テ ス トに 使用しない 要素を一時的保管 HTTPプ ロ キ シを動作させ る 場所 11 平成18 年10 月3 0日 1.ス レ ッ ドグ ル ー プ の 作成 JM eterの テ ス ト実行計画を作成す る 場合、ま ず ユ ー ザ (ス レッ ドグ ル ー プ )を作成しま す 。 テ ス ト計画を 選択して 、右ク リ ッ ク しま す 。 追加⇒ス レッ ドグ ル ー プ を選択しま す 。 わ か り や す い 名前を 付け ま す 。 実施す べ きテ ス トプ ラ ン に 沿っ た ス レ ッ ド数(ユ ー ザ 数)等の 設定を しま す 。 12 6 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 2.デ フ ォ ル トHTTPリ ク エ ス トの 作成 ス レッ ド共通の H TTPリ ク エ ス トの デ フ ォ ル ト値を設定エ レメントの 作成よ り 設定しま す 。 ※そ の 他 設定す べ き設定エ レメン トが あ れ ば 設定しま す 。 作成した ス レッ ドグ ル ー プ を 選択して 、右ク リ ッ ク しま す 。 追加⇒設定エ レメン ト⇒H TTPリ クエ ス ト初期値設定を選択しま す 。 テ ス ト対象の サ ー バ 名/IPを 定義しま す 13 平成18 年10 月3 0日 3.サ ン プ ラ ー の 作成 実際に H TTPリ クエ ス ト処理を行うもの と して 、サ ン プ ラー を作成しま す 。 作成した ス レッ ドグ ル ー プ を 選択して 、右ク リ ッ ク しま す 。 追加⇒サ ンプ ラー ⇒H TTPリ ク エ ス トを選択しま す 。 わ か り や す い 名前を 付け ま す 。 ア ク セ ス 対象は 、設定エ レ メン トで設定 して ま す 。 こ こ では 、実際の HTTPリ ク エ ス トの パ ス 等の み 設定しま す 。 14 7 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 4.リ ス ナ ー の 作成 テ ス ト結果の 表示と 保存の た め に リ ス ナ ー を 追加しま す 。 ※リ ス ナ ー は 、各々の テ ス トプ ラ ン に お い て 必要なもの を設定しま す 。 作成した ス レッ ドグ ル ー プ を 選択して 、右ク リ ッ ク しま す 。 追加⇒リ ス ナ ー ⇒統計レポ ー トを選択しま す 。 結果を フ ァ イ ル に 保存で きま す 。 サ ン プ ラ ー の 処理結果が そ れ ぞ れ の リ ス ナ ー に 応じた 形で動的に 表示され ま す 。 15 平成18 年10 月3 0日 5.テ ス トプ ラ ン の 保存 テ ス トプ ランを 実行す る 前に 、テ ス トプ ラ ンの 保存をしま す 。 メニ ュ ー の フ ァ イル ⇒テ ス ト計画を 保存 ま た は 、 フ ァ イル ⇒ テ ス ト計画に 名前を つ け て 保存を選択しま す 。 わ か り や す い 名前を つ け て 保存しま す 。 16 8 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 6.テ ス トプ ラ ン の 実行 テ ス トプ ラン実行開始の 準備が 完了後、テ ス トプ ランの 実行を開始しま す 。 メニ ュ ー の 実行⇒開始を選択、ま た は 、 『Ctr l』+ 『R』を押しま す 。 テ ス トプ ラ ン の 実行後、テ ス トが 正常 に 行わ れ て い る か ど う か を 確認す る に は 、設定した リ ス ナ ー を 参照しま す 。 17 平成18 年10 月3 0日 7.実行結果の 確認 テ ス トが 終了した ら リ ス ナ ー に お い て 、テ ス ト実行結果を 確認しま す 。 追加⇒リ ス ナ ー ⇒統計レポ ー トを選択しま す 。 18 9 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 実行イ メー ジ テ ス ト計画 ス レッ ドグ ル ー プ (3 ス レッ ド、4回) リ ク エ ス ト初期値設定 統計レポ ー ト ス レッ ド Ra mp-up期間 HTTPリ ク エ ス ト 19 平成18 年10 月3 0日 Apache JM eter実践編 10 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 内容 1 . JM e te rの チ ュ ー ニ ン グ 2 . タイマ 3 . テ ス トプ ラ ン の 自動生成 21 平成18 年10 月3 0日 JM eterの チ ュ ー ニ ン グ 問題 JM e te rで数多くの ス レッ ド(クラ イア ント)を実行す る と 、容量不足に なり 以下の よ う なエ ラー が 発生す る こと が あ りま す 。 ERRO R - jm e ter . th r e a d s. JM ete r Th r ea d : Test fa ile d ! ja v a . la n g . O u tO fM em o ry Er r o r: Ja v a h ea p sp a ce JM e te rの チ ュ ー ニ ン グ が 必要です ! ! • 起動ス ク リ プ ト($ JM ETER_ H O M E/b in /jm ete r . b a t)を 編集しま す 。 • Ja v a ヒ ー プ の 大きさを 大きくして下さい 。 テストとマシンのスペックに応じて チューニングします。 se t H EA P= -X m s2 5 6 m -X m x 2 5 6 m 22 11 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. タイ マ JM eterが リ クエ ス トを 送信す る と きデ フ ォ ル トでは 、間髪を 入れ ず に リ ク エ ス トを 送信 しま す 。 タイマ を利用す る こと で、そ れぞ れの 処理の 間に 間隔を入れる こと が 出来ま す 。 左フ レー ム の 『ス レッ ドグ ル ー プ 』を 選択した 後、右ク リ ッ クま た は 『編集』メニ ュ ー か 追加⇒タイマ を選択して 、『定数タイマ 』や 『定数ス ル ー プ ッ トタイマ 』等を 追加しま す 。 「定数タイマ 」は 、待ち 時間を ミリ 秒で指定しま す 。 「定数ス ル ー プ ッ トタイマ 」は 、1 分間に 送出す る リ ク エ ス ト数で指定しま す 。 例)6 0 を設定す る と 1秒間に 1 つ の リ クエ ス トが 送出されま す 。 23 平成18 年10 月3 0日 タイ マ を 使用した と きの 実行イ メー ジ テ ス ト計画 ス レッ ドグ ル ー プ (1 ス レッ ド、4回) リ ク エ ス ト初期値設定 統計レポ ー ト ス レッ ド タイ マ HTTPリ ク エ ス ト 24 12 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. テ ス トプ ラ ン の 自動生成 JM eterに は 、ブ ラ ウ ザ か ら行っ た 操作を テ ス ト計画に 自動的に 変換してくれ る H TTPプ ロ キ シサ ー バ 機能が あ り ま す 。 手順1 . ス レ ッ ドグ ル ー プ の 作成 手順2 . HTTPリ ク エ ス ト初期値設定エ レ メン トの 追加 手順3 . H TTPプ ロ キ シサ ー バ エ レ メン トの 追加 手順4 . W e b ブ ラ ウ ザ の プ ロ キ シ サ ー バ を 設定 手順5 . テ ス ト計画の 記録 手順6 . テ ス ト計画の 編集 手順7 . リ ス ナ ー の 追加 手順8 . テ ス ト計画の 保存 手順9 . テ ス トの 実行 • プ ロ キ シを 設定 • シナ リ オ の 実行 p o r t: 8 0 p o r t: 8 0 8 0 テ ス トプ ラン の プ ロ キ シモ ー ドで動作 25 自動生成 テ ス ト対象サ ー バ 平成18 年10 月3 0日 性能試験 13 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 性能試験概要 性能試験を 実施す る 時の フ ロ ー の 概要 1 . 事前調査(想定負荷、試験環境、試験項目) 2 . 環境の 準備(H W 、SW 、試験デ ー タ) 3 . 試験プ ラ ン 作成と 実施 4 . 結果の 分析と 確認 27 こ こで 性能が 出な い と 大変です ! 平成18 年10 月3 0日 性能試験での 実例 実際の プ ロ ジェ ク トでの 実例(w i th 脚色) • A さん は 、下記の シス テ ム 用件で 性能試験をす る こと に なり ま した 。 • 応答時間は 2 秒以内 • 最大同時ユ ー ザ ー 数は 1 0 0 人 • 試験シナ リ オ (ロ グ イ ン 、商品検索、カ ー トに 商品を入れ る、購入、ロ グ ア ウ ト) • 試験環境と シナ リ オ は 、完璧に 準備しま した 。 • と ころで 、ど の よ うな試験をす れ ば よ い の だ ろう ??? • • • • 最大同時ユ ー ザ が 100人なの で、JM e te r を 用い て 100ス レッ ドで 試験す れ ば 良い だ ろ う。 あ ま り 多く 実行す ると 危ない の で、と り あ え ず 、実行回数は 1 人に つ き 1 回に しよ う! そ して 、全て の リ ク エ ス トの 応答時間が 2 秒以内で あ れ ば シ ス テ ム 要件を満た す こと に なる。 こ れ で僕の 仕事も終了だ ! 試験開始! 28 14 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 結果 応答時間が と ん でもない 値に なっ て しま い ま した 。 キ ャ ッ シュ が 原因か なぁ !? もう 一回実施しよう ! あ れ ? 変わ ら ない なぁ ? あ と 、もう一回実施す る。 うん ん ………変わ ら ない なぁ ! e te r は だ め だ なぁ ! 高い け ど 商用製品を 買う しか ない ! や っ ぱ 、JM 待っ て くだ さい ! JM e te rは 悪くあ り ま せ ん 。 29 なぜ 、こ の よ う なこ と に なっ て しま っ た の で しょ う か ? 何が 悪か っ た の でしよ う か ? 平成18 年10 月3 0日 Aさん が 実施した 試験と は ? • ど の よ う な試験を 実施した こ と に なる の ? −1 0 0 人が 同時に 、下記シナ リ オ を 実施 • ロ グ イ ン、商品検索、カ ー トに 挿入、購入、ロ グ ア ウ ト −そ の 上1 0 0 人が 、各操作を 必死で休み 無く実行 • こ れ っ て ど ん な負荷? −人気商品を 特定の 時刻に 売り 出した 時の よ う な負荷 30 15 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. Aさん が 実施した 試験の 概要 テ ス ト計画 ス レッ ドグ ル ー プ リ ク エ ス ト初期値設定 統計レポ ー ト 1 0 0 ス レッ ド 連続実行 : : 同時実行 31 平成18 年10 月3 0日 Aさん の 試験の 改善方法 テ ス ト計画 ス レッ ドグ ル ー プ リ ク エ ス ト初期値設定 統計レポ ー ト ス レッ ド Ra mp-up期間 32 16 : : 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 負荷試験方法の セオ リ ー • 実際の 試験で は 、何ス レ ッ ドで試験を す れ ば 良い の で しょ う か ? シナ リ オ は 何回実施す れ ば 良い の でしょ う か ? • よ ほ ど 自信が あ る 場合以外は 、以下の よ う に 小さな負荷か ら 試験を 実施して 下さい 。 1 . 想定負荷の 検討 2 . 基礎デ ー タの 取得 3 . 小さな負荷試験 4 . 想定負荷の 負荷試験 5 . 高負荷試験 高負荷で 問題が 発生した 場合は 、基礎デ ー タと 比較す る こ と に よ り 、解決の 糸口を 見つ け るこ と が 出来ま す 。 • 33 平成18 年10 月3 0日 想定負荷の 検討 • 実際の プ ロ ジェ ク トなど で は 、性能の 目標値が 無か っ た り 、不明 確であ るこ と が 多々あ り ま す 。 −実例 • 最大ユ ー ザ ー 数は 1 0 0 人、応答時間は 、2 秒以内 → 同時ユ ー ザ 数は ? • ユ ー ザ ー 数は 1 0 0 人、秒間5 0 個の 処理 → 5 0 個の 単位は ? • 最低、確認す べ き項目 −ユ ー ザ ー 数は シス テ ム に 登録され る人数?そ れ と も同時に シス テ ム に ア ク セス す る人数? • JM e te rで試験を す る場合の ス レッ ド数と は 、同時ア ク セス 数に 対応しま す 。 −ス ル ー プ ッ トの 単位は H TTPリ ク エ ス ト? そ れ と もシナ リ オ 単位? • JM e te rでの 試験結果の 集計は 、H TTPリ ク エ ス ト単位で行わ れま す 。 −応答時間の 目標値 34 17 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 基礎デ ー タの 取得 • 1 ユ ー ザ が シ ナ リ オ を 1 回だ け 実行した 時の リ ク エ ス トの 応答時 間を 測定しま す 。 1 . 1 つ の ブ ラウ ザ か らシナ リ オ を 実行した 時の 応答時間の 測定 2 . JM eterか ら 1 ス レ ッ ド、1 回の シナ リ オ 、リ ク エ ス トの 間隔1 秒で実施し、各 リ ク エ ス トの 応答時間を 計測 • 何が 分か るの ? − シス テ ム に お け る最高の 応答時間が 分か り ま す 。 − 1 の 試験の 結果が 、応答時間の 要件を 満た してい ない 場合 • これ 以上試験をす る必要は あ り ま せ ん 。早速、遅い 原因を 調査して 下さい 。 − 2 の 試験の 結果が 、1 の 試験結果と 大きく 異なっ て い る場合は 、JM eterの 設定など を 確認して くだ さい 。 35 平成18 年10 月3 0日 性能基礎試験 • い よ い よ 負荷を か け て い き ま す 。あ せ る 気持ち を 抑え て 以下の 順番で試験を 実施しま しょ う 。 • 試験A : 1 多重複数回(1 ス レ ッ ド、1 00 シナ リ オ ) −応答時間が 、だ ん だ ん 悪くなる よう なこと は あ りま せ ん か ? −ス ル ー プ ッ トを 記録して下さい 。 • 試験B : 2 多重複数回(2 ス レ ッ ド、1 0 0 シナ リ オ ) −平均応答時間は 、ど の 程度悪くなり ま した か ? −ス ル ー プ ッ トは 、試験Aの 2 倍ぐ ら い の 値に なっ てい ま す か ? • 試験C : 4 多重複数回(4 ス レ ッ ド、1 0 0シナ リ オ ) −平均応答時間は 、ど の 程度悪くなり ま した か ? −ス ル ー プ ッ トは 、試験Aの 4 倍ぐ ら い の 値に なっ てい ま す か ? 36 18 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 性能基礎試験っ て ? • 疑問? −試験A、試験B、試験Cを 実施しま した が 、これ ら の 試験は 何の た め に 行っ た の でしょ う か ? −次に ど の よ うな試験を す れ ば 良い の でしょ うか ? • 基礎性能試験を 実施した 意味 −シス テ ム の 限界性能に 対して 、試験Aか ら 試験Cに よ る負荷が ど の 程度の 負荷に なっ て い るか を 見るた め に 実施してい ま す 。 • 分析方法 −シ ス テ ム が 限界性能に 達した と きに 、ス ル ー プ ッ トの 値や 応答時間の 値が ど の よ う に 変化す るか の 傾向を 知る こ と に よ っ て 、試験Aか ら 試験Cの 負荷 の 程度を予想す ること が 出来ま す 。 37 平成18 年10 月3 0日 典型的な性能試験結果 ス ル ー プ ッ トと 応答時間 18 16 16 ス ル ープッ ト(request/秒) 応答時間(秒) 15 14 12 12.5 12 10 8 8 要求性能 6 4 5 4 2 2 1 0.50.6 0.7 0 0 5 1.2 • 10 15 20 ク ラ イ ア ン ト(ス レ ッ ド)数 ス ル ー プ ッ ト理想性能 ス ル ー プッ ト 25 応答時間 30 基礎デ ー タ −1ス レッ ドで 試験 −1 秒間に 1つ の リ ク エ ス ト を送信 −平均応答時間は 、0. 5秒 38 19 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 試験結果の 例 スル ー プ ッ トと 応答時間 9 ス ル ー プッ ト(リ ク エ ス ト/秒) 応答時間(秒) 8 8 性能の 劣化 7 6 6 5 4 4 3.5 限界性能 2 2 1 1.4 1 0.5 0 • 0.6 基礎デ ー タ −1ス レッ ドで 試験 0 0 1 2 3 4 5 6 ク ラ イア ン ト(スレ ッ ド)数 ス ル ー プ ッ ト理想性能 39 4 3 スル ー プ ッ ト 7 8 9 応答時間 −1 秒間に 1つ の リ ク エ ス ト を送信 −平均応答時間は 、0. 5秒 平成18 年10 月3 0日 性能試験の コ ツ • シナ リ オ の 作成 • 各リ ク エ ス トの 間に は 間隔を 入れ る • 各ス レ ッ ドの 開始時間を ず ら す • ス レッ ドグ ル ー プ の Ra m p -u p 時間は 長め に 設定す る • 基礎デ ー タの 取得 • 最初に 、ブ ラウ ザ か ら 実行して 見てくだ さい 。 • 期待す る 応答時間内で処理できて い ま す か ? • 1 ス レ ッ ドでシナ リ オ を 1 回だ け 実行して、各リ クエ ス トの 応答時 間が 要件を 満た して い ること を確認して くだ さい 。 • 性能基礎試験 • 1 ス レ ッ ド複数回の 実行 • 2 ス レ ッ ド、4 ス レ ッ ドと 、徐々に 負荷を か け て下さい 。 • 実施して い る性能試験が 、限界性能に 対して ど の 程度 の 負荷を 与え て い るか を 把握しなが ら 試験を 実施して 下さい 。 40 20 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 性能試験の コ ツ :そ の 2 • 早め の 性能試験の す す め • 出来れ ば 、プ ロ トタイ プ の 作成時や 、開発時か ら 負荷試験を 実施 す ること を お 勧め しま す 。 • 単体機能の 負荷試験も可能です。 41 平成18 年10 月3 0日 Application Server チュ ーニ ング の ヒント 21 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 基礎的なチ ュ ー ニ ン グ • JVM の ヒ ー プ メモ リ ー の 拡張 −ど の よ うな時に 拡張す る必要が あ るの ? • O utO fM emoryエ ラー の 発生 • ja va –verboseg cでヒ ー プ の 使用量を 確認す る と 、最大値の 8 0 % ぐ ら い 使用し ている。 −設定 • -Xmx でヒー プ メモ リ ー の 最大値を設定して 下さい 。 • リ ク エ ス トの 通り 道の 確保 −試験の 多重度と 同程度あ り ま す か ? • APサ ー バ の ス レッ ド数 • JDBCコネク ショ ン 数 43 平成18 年10 月3 0日 性能が 出ない 場合の 対処 • APサ ー バ の CPUの 使用率が 低い 場合 − デ ー タベ ー ス の 応答時間の 問題 • デ ー タベ ー ス へ の ク エ リ に 遅い ク エ リ は あ り ま す か ? − Javaア プ リ ケ ー ショ ン 内での 共有リ ソー ス に 対す るロ ッ クの 問題 • デ ー タベ ー ス へ の ク エ リ の 応答時間に 問題が ない 場合は 、調査して み て 下さい 。 • APサ ー バ の CPUの 使用率が 高い 場合 − ア プ リ ケ ー シ ョ ン 内で CPUを 消費(浪費)す る処理の 有無を調査して 下さい 。 44 22 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. APサ ー バ チ ュ ー ニ ン グ の ヒ ン ト • 性能が 出ない 場合 • Ja v a –X m x の 設定は され てい ま す か ? • A Pサ ー バ の ス レ ッ ド数、JD BCコネ ク ショ ン 数は リ クエ ス トの 多重 度と 同程度確保されて い ま す か ? • デ ー タベ ー ス の 応答時間に 問題は ない です か ? • Ja v a ア プ リ ケ ー ショ ン 内で共有リ ソー ス の ロ ッ クの 問題は 発生し ていませんか ? 45 平成18 年10 月3 0日 まとめ • 性能試験の 重要性 • Apache JM eter • 性能試験方法 • APサ ー バ の チ ュ ー ニ ン グ の ヒン ト 46 23 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 付録 参考URL • U RL − A p a ch e JM e te r http: //ja ka rta . a pa che. org /jmeter/ − A p a ch e Ja k a ru ta Pr o je ct U se r M a n u a l http: //jaka rta. a pache. org /jmeter/usermanual/index. html − A p a ch e Ja k a ru ta Pr o je ct ユ ー ザ マ ニ ュ ア ル (日本語訳) http://cg i0. biw a. ne. jp/~ya buta/study/jmeter/userma nua l/ − JM e te rエ ン コー ド指定パ ッ チ http: //testkei. secret. jp/blog /jablog /archives/cat1 6 3 /java/jmeter/index. html − 動的リ クエ ス トの 利用(複数の リ クエ ス トパ ラメー タの 利用方法) http: //w iki. apache. org /jakarta-jmeter/JM eterFAQ #head-168 086 36 782 57fbcb 85b d9 7 3518 60eb00 49f19 ae • 書籍 − 月刊Ja v a W o rld (ジャ バ ワ ー ル ド) 2 0 0 5 年1 2 月号 48 24 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 関連URL 日本ヒ ュ ー レッ トパ ッ カ ー ド・オ ー プ ン ソー ス &Li n u x • h ttp : //w w w . h p . co m /jp /lin u x / 49 平成18 年10 月3 0日 エ レ メン ト:ス レ ッ ドグ ル ー プ • ク ラ イア ン トの 設定 • 全て の テ ス トプ ラ ン は これ か ら 始ま り ま す 。 • この 下に サ ンプ ラ ー や リ クエ ス トと い っ た エ レ メン トを 追加してい くこと で様々 名前:テ ス トケ ー ス 名 な設定を行い ま す 。 サ ン プ ラ ー エ ラ ー 後の ア ク ショ ン: サ ン プ ラ ー 実行中に エ ラ ー が 発生した 際の ア ク ショ ン 続行(デ フ ォ ル ト)/ス レッ ド停止/テ ス ト停止 ス レッ ド数: (デ フ ォ ル ト1 ) JM eterが 生成す る ク ラ イ ア ン ト数(ア ク セ ス ユ ー ザ 数) Ra m p -U p 期間(秒): (デ フ ォ ル ト1 ) 全て の ス レッ ドが 起動す る ま で の 時間 ル ー プ 回数: (デ フ ォ ル ト1 ) 各ス レッ ドに て 実行す る テス トケ ー ス の 回数 ス ケ ジュ ー ラ :チェ ッ ク を入れ る と 時間指定など の 詳細な設定が 可能(デ フ ォ ル トO FF) 50 25 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. Ra mp-up期間の 設定に つ い て • ス レ ッ ドグ ル ー プ の Ra m p -u p 期間(秒)と は ? −最初の ス レ ッ ドが 起動して か ら 、最後の ス レ ッ ドが 起動す る ま で の 時間を 指定しま す 。 • ス レ ッ ド数秒以上の 値を 設定す るこ と を お 勧め しま す 。 • 例え ば 、ス レ ッ ド数「3 」で 、Ra m p -u p 期間が 「6 秒」の 場合は 、 6 ÷3 = 2 秒間隔でス レ ッ ドが 生成され ま す 。 6秒 2秒 ス レッ ド 51 平成18 年10 月3 0日 プ ロ キ シサ ー バ の 使用 • フ ァ イ ヤ ー ウ ォ ー ル や プ ロ キ シサ ー バ 越しに テス トす る場合 • フ ァ イ ヤ ー ウ ォ ー ル や プ ロ キ シサ ー バ の 名前や ポ ー ト情報を JM eterの 起動 コマ ン ドに 与えて 起動しま す。 jm e ter . b a t –H [プ ロ キ シサ ー バ の ホス ト名] –P [ポ ー ト] –u [ユ ー ザ 名] –p [パ ス ワ ー ド] p o r t: 8 0 8 0 p o r t: 8 0 テ ス ト対象サ ー バ プ ロ キ シー サ ー バ 52 26 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. タイ マ タイマ を『ス レッ ドグ ル ー プ 』に 付け 加えるか 、あ る い は 『HTTPリ クエ ス ト』等に 付け 加え る か に よ っ て 、そ の タイマ の 影響の 範囲が 異なりま す 。 『H TTPリ ク エ ス ト』に 『定数タイマ 』を つ け た 例 こ の 場合、タイ マ が 適用さ れ る の は 、『リ ク エ ス トA 』の み で す。 『リ ク エ ス トB』に は 、タイ マ は 適用され ま せ ん 。 した が っ て 、右の 例の 場合は 、以下の よ う に 動作しま す 。 実行⇒1 0 秒待機⇒リ ク エ ス トA ⇒リ ク エ ス トB 『ス レ ッ ドグ ル ー プ 』に 『定数タイ マ 』を つ け た 例 こ の 場合は 、『ス レ ッ ドグ ル ー プ 』以下の 全て の サ ン プ ラ ー (こ の 例では 、『リ ク エ ス トA 』と 『リ ク エ ス トB』)と の 間で、 タイ マ に よ っ て 指定され た 分だ け 待機時間が 発生しま す 。 した が っ て 、右の 例の 場合は 、以下の よ う に 動作しま す 。 実行⇒ 1 0 秒待機⇒リ ク エ ス トA ⇒1 0 秒待機⇒リ ク エ ス トB 53 平成18 年10 月3 0日 リ ク エ ス トパ ラ メー タの 文字化け 問題 【問題】 シナ リ オ 作成の 際、H TTPリ ク エ ス トに 日本語デ ー タを含む と 文字化け を起こして しま う 。 例)パ ラ メー タ「1 2 3 4 5 6 ABCabcあ 」と 入力す る。 ⇒リ ク エ ス トパ ラ メー タが 「1 2 3 4 5 6 ABCabc□□/b > 」 と 文字化け す る 。 【原因】 U RLエ ン コー ド&デ コー ドは U TF-8 を使用して お り 、日本語に 対応してい ない 仕様。 【対策】 以下の ど ちら か の 対応をす る こと で本問題に 対応す る こと が できま す 。 ※た だ し、オ ー プ ン ソー ス です の で、参考程度と し、使用の 際は 個人責任と なり ま す 。 サ ー バ ー 側でもリ クエ ス ト・エ ン コー デ ィン グ を UTF-8 で揃える 。 修正モ ジュ ー ル の 適用(J@Blog )→詳細手順に 関しては 、別紙を ご 覧下さい 。 参考URL : http: //testkei. secret. jp/ blog /jablog /archives/cat1 6 3 /java /jmeter/index. html 54 27 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. HTTP認証マ ネ ー ジャ HTTP認証マ ネ ー ジャ は 、H TTP認証(Ba sic認証)を 利用できま す 。 追加⇒設定エレメント⇒H TTP認証マネージャを選択します。 例え ば 、http://loca lhost/a dmin/に HTTPの Ba sic認証が か け られ て い る と しま す 。ま た 、そ の 認証IDと パ ス ワ ー ドが そ れぞ れ “a dmin”と “admin”だ と しま す 。 そ の 場合は 、上記の よ う な設定す れ ば 、HTTPの Ba sic認証をパ ス す る こと が できま す 。 ※ 「パ ス ワ ー ド」の 部分は 自動的に 伏字に なり ま す 55 平成18 年10 月3 0日 動的リ ク エ ス ト 3 . 動的リ ク エ ス トの 利用 事前に 登録してお い た 複数の ユ ー ザ を ス レッ ド起動毎に 動的に 切り 替え た い 場合に 、 ユ ー ザ 変数を 利用す ると 大変便利です 。 1人の ユ ー ザ では なく、複数の リ クエ ス トパ ラ メー タと してユ ー ザ を用い て負荷試験を す る 際に 使用しま す 。 パ ラ メー タ情報を 記述した 外部フ ァ イル を読み込ま せ 、動的に ユ ー ザ パ ラ メー タを切 り 替え る方法を使い ま す 。 手順と して は 、ユ ー ザ パ ラ メー タと 外部フ ァ イル の 利用と なりま す 。 この 手順は 、JM eterの FAQ で紹介され て い ま す 。詳しく は 、下記URL先を ご 参考下さい 。 JM e te rFA Q ⇒ How do I use externa l da ta files to in my Test scripts? http: //w iki. apache. org /jakarta -jmeter/JM eterFAQ #head-168 086 36 782 57fbcb 85b d9 735 1 860eb 00 49f19 ae 56 28 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 動的リ ク エ ス ト 手順1 . JM ete rの 起動を起動して 、ス レッ ドグ ル ー プ を 作成しま す 。 手順2 . ス レッ ドグ ル ー プ を選択し、前処理⇒ユ ー ザ パ ラ メー タを追加しま す 。 『変数の 追加』を 選択して 、変数を設定しま す 。 記述形式:$ { _ Str in g Fro m File (ファイル名)} 名前 ユーザ_ 1 user_ id $ { _ String FromFile(userid. txt)} pa ssw ord $ { _ String FromFile(pa ssw ord. txt)} 57 平成18 年10 月3 0日 動的リ ク エ ス ト 手順3 . スレッドグループを選択し、サンプラー⇒ H TTP リクエストを追加します。 リクエストで送るパラメータの『追加』を選択して、変数を設定します。 記述形式:$ {名前} ※名前は、手順2のユーザパラメータの名前 名前 user_ id pa ssw ord 58 29 値 $ { user_ id} $ { pa ssw ord} 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 動的リ ク エ ス ト 手順4 . $ JM ETER_ H O M E/b in 以下にパラメータを記述したファイルを配置します。 ※ $ JM ETER_ HO M Eとは、JM eterをインストールしたフォルダを示します。 ※ ファイルの中身は、テキスト形式で以下のような記述となります。日本語もO Kです。 ---user_ id. txt---ta ro jiro sa buro ---pa ssw ord. txt---pa ss1 pa ss2 pa ss3 手順5 . テストを実行します。 ファイルの内容は、スレッド起動毎に上から1行づつ読み込み、最後まで行くと最初のパラメータ を再度読み込みます。 ※上の例では、 STA RT⇒1 回目:ta r o /p a ss1 ⇒2 回目:jir o /p a ss2 ⇒3 回目:sa b u r o /p a ss3 ⇒4 回目:ta r o /p a ss1 (最初のパラメータ) ⇒・・・・・・・・・・・・・・・・・・・・・ 59 平成18 年10 月3 0日 テ ス トプ ラ ン の 自動生成 手順1 . JM ete rの 起動を起動して 、ス レッ ドグ ル ー プ を 作成しま す 。 ま ず 「テ ス ト計画」の 中に ス レッ ドグ ル ー プ を 作成しま す 。 「テ ス ト計画」を右ク リ ッ ク し、 追加→ス レッ ドグ ル ー プ を選択しま す 。 「テ ス ト計画」の 下に 「ス レッ ドグ ル ー プ 」が 追加され ま す 。 60 30 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. テ ス トプ ラ ン の 自動生成 手順2 . H TTPリ ク エ ス ト初期値設定エレメント 共通設定が あ る 場合は 、ス レッ ドグ ル ー プ に あ らか じめ 追加してお きま す 。 スレッドグループ上で右クリックした後、 追加→設定エレメント より H TTPリクエスト初期値設定を追加します。 61 平成18 年10 月3 0日 テ ス トプ ラ ン の 自動生成 手順3 . H TTPプロキシサーバエレメント ワークベンチ上で右クリックした後、 追加→N o n Te stエレメントより H TTPプロキシサーバを追加します。 62 31 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. テ ス トプ ラ ン の 自動生成 手順3 . H TTPプ ロ キ シサ ー バ エ レメン ト □ ポ ー トの 指定 JM eterが プ ロ キ シサ ー バ と して リ ク エ ス トを 受け 付け る ポ ー ト番号を 指定しま す 。(デ フ ォ ル トは 8 0 8 0 番) □ テ ス ト計画に 挿入す る パ ター ンと 、除外す るパ ター ン の 指定 テ ス ト計画に 必要なURLと 、除外した い URLの パ ター ン を 指定しま す 。 URLの 指定は 、Perl形式の 正規表現を 用い ま す 。 [ テ ス ト計画に 挿入す る U RLパ タ ー ン の 例 ] *i n d e x ¥ . jsp [ テ ス ト計画か ら 除外す る U RLパ タ ー ン の 例 ] 画像フ ァ イ ル :*¥. g if や *¥. jpg や *¥. png など CSSフ ァ イ ル :*¥. css Ja va ス ク リ プ ト :*¥. js 63 平成18 年10 月3 0日 テ ス トプ ラ ン の 自動生成 手順4 . W e b ブ ラ ウ ザ の プ ロ キ シサ ー バ の 設定を しま す 。 JM eterが イ ン ス トー ル され て い る マ シン の ブ ラ ウ ザ の プ ロ キ シサ ー バ の 設定を しま す 。 例え ば 、Internet Explorerで あ れ ば 、ツ ー ル →イ ン タ ー ネ ッ トオ プ シ ョ ン →設定→LA N の 設定よ り 行え ま す 。 入力欄「ポ ー ト」に は HTTPプ ロ キ シサ ー バ 詳細設定画面で 入力した の と 同じポ ー ト番号を 指定して くだ さい 。 [ In te r n e t Ex p l o r e r の プ ロ キ シ設定 ] LA N に プ ロ キ シサ ー バ を 使用す る に チ ェ ッ ク を 入れ ま す 。 ア ドレ ス は 、自分自身の ア ドレ ス (1 2 7 . 0 . 0 . 1 ) ポ ー トは 、H TTPプ ロ キ シサ ー バ で設定した 値を 入れ ま す 。 ※こ こ では 、8 0 8 0 番 64 32 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. テ ス トプ ラ ン の 自動生成 手順5 . テ ス ト計画の 記録 HTTPプ ロ キ シ サ ー バ 画面の 「開始」ボ タン を 押す と 、JM eterが プ ロ キ シサ ー バ と して 動作し始め ま す 。 65 平成18 年10 月3 0日 テ ス トプ ラ ン の 自動生成 手順5 . テ ス ト計画の 記録 手順4 にてプロキシの設定を行ったブラウザにて、 実際にテスト対象ページを閲覧、操作します。 注意点 1. URLに ミス が あ っ た り 余分なペ ー ジを閲覧して しま っ た 場合は 、 手動で 修正や 削除が 可能で す 。 2. W ebブ ラ ウ ザ に よ る 巡回が 終わ っ た ら 、JM eterの 「HTTPプ ロ キ シサ ー バ 」で[停止]ボ タン をク リ ッ ク して 記録を終了しま す 。 もし、停止す る 前に ブ ラ ウ ザ を閉じて しま う と そ の 動作も記録され て しま い ま す 。 66 33 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. テ ス トプ ラ ン の 自動生成 手順5 . テ ス ト計画の 記録 □ 『プ ロ キ シサ ー バ 』を停止させ 、テ ス ト計画が 記録され てい る こと を確認しま す 。 『プ ロ キ シサ ー バ 』の 起動後か ら「停止」ボ タン を押し『プ ロ キ シサ ー バ 』を 停止しま す 。 テ ス ト計画の 『ス レッ ドグ ル ー プ 』以下に 結果が 組み 込ま れて い るの が 確認できま す 。 67 平成18 年10 月3 0日 テ ス トプ ラ ン の 自動生成 手順6 . テ ス ト計画の 編集 自動的に 追加され た 「ス レッ ドグ ル ー プ 」下の 「HTTPリ ク エ ス ト」に 余分なもの が あ る 場合は 、そ の リ クエ ス トを 右ク リ ッ クして [削除]を選択しま す 。 リ ク エ ス トをク リ ッ クす れ ば 、URLの 修正など が 行えま す 。CG Iなど の 動的コンテ ン ツ で、 サ ー バ に 渡す パ ラ メー タが あ る 場合は ここで指定を行い ま す 。 68 34 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. テ ス トプ ラ ン の 自動生成 手順7 . リ ス ナ ー の 追加 試験結果を 見るた め に 、必要なリ ス ナ ー を追加しま す 。ここでは 、[グ ラ フ 表示]と [統計 レポ ー ト]の リ ス ナ ー を 追加しま した 。 手順8 . テ ス ト計画の 保存 作成した テ ス ト計画を保存しま す 。 69 平成18 年10 月3 0日 テ ス トプ ラ ン の 自動生成 手順9 . テ ス トの 実行 「ス レッ ドグ ル ー プ 」の [ス レッ ド数]や [ル ー プ 回数]など の 値を 調整して か ら 実行しま す 。 ま た 、実行結果をク リ ア す るに は 「実行」メニ ュ ー の 「全て消去」を選択しま す 。 70 35 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. ス ル ー プ ッ トと ユ ー ザ 数の 関係 • 例え ば 、ス ル ー プ ッ トの 目標値が 1 0 0 リ ク エ ス ト/秒で あ る 場合、JM e te r で こ の 負荷を 実現す る に は ど の よ う な試験を す れ ば よい の でしょ う か ? −1 0 0 ス レッ ドで実行す る場合は ? リ ク エ スト 1秒 th rea d • 各リ ク エ ス トが 1 秒お き に 実行され る よ うに 設定しま す 。 • 「定数ス ル ー プ ッ トタイマ ー 」で 6 0 r e q /分に 設定しま す 。 −2 0 0 ス レッ ドで実行す る場合は ? • 各リ ク エ ス トが 2 秒お き に 実行され る よ うに 設定しま す 。 • 「定数ス ル ー プ ッ トタイマ ー 」で 3 0 r e q /分に 設定しま す 。 −5 0 ス レッ ドで実行す る場合は ? • 1 秒で 2 つ の リ ク エ ス トが 実行され る よう に 設定しま す 。 • 「定数ス ル ー プ ッ トタイマ ー 」で 1 2 0 r e q /分に 設定しま す 。 • この よ う に ス レ ッ ド数と リ クエ ス トの 間隔を 調整しま す 。 71 平成18 年10 月3 0日 試験を 実施す る 前に 注意 • 各試験の 前に は 以下の よ う な事前試験を 実施して 下さい 。 • 試験前の 事前処理 −測定す るシナ リ オ を 複数回実行す る • 理由 −シス テ ム が 保持して い るキ ャ ッ シュ に 値を 入れた り 、Ja v a の コー ドの コン パ イ ル 動作を事前に 実施す るた め 。 • 注意 −試験時に か け る負荷に 合わ せ た 事前処理を す ること をお 勧め しま す 。 72 36 平成18 年10 月3 0日 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved. 37 Copyrig ht © 20 0 6 HP corporate presenta tion. All rig hts reserved.