kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Apache JMeterで世界規模のデータセンターから負荷をかける

Visual StudioとVisual Studio Team Servicesを使えば、任意の(残念ながら日本はまだありません)Azureデータセンターから特定のWebサイトに負荷をかけることができます。

クラウドベースのロードテスト | Visual Studio Online

www.atmarkit.co.jp

負荷をかけるサイトはASP.NETに限らないのですが、Visual Studioを使わなければなりませんでした。ところが、先日のバージョンアップでApache JMeterにも対応しました。

blogs.msdn.microsoft.com

実際にやってみましょう。まず、簡単なJMeterの負荷シナリオを作っておきます。必ず最新版(2.13)を使ってください。

f:id:kkamegawa:20160319074557p:plain

Visual Studio Team ServicesのLoad TestからApache JMeter testを選びます。

f:id:kkamegawa:20160319074558p:plain

Target Scriptに作成したjmxファイルを指定します。

f:id:kkamegawa:20160319074559p:plain

Supporting Filesには負荷テストで使用するパラメータなどを格納したcsvファイルを指定します。今回は使ってないので指定しません。

あとはAgentの数、負荷の時間、どのデータセンターから実施するか、ということを選ぶだけです。Run Testを実行すればかまいません。しかし、実行するとこんなエラーが出ることがあります。

f:id:kkamegawa:20160319074600p:plain

VSTS Load Testでjmxが実行できない場合、この辺が理由になります。

  • jmxファイルの中身(テスト計画名など)に日本語を使わない
  • 「結果を表で表示」などのインタラクティブな出力を伴うリスナーを追加しない

JMeterを日本語UIで使うと自動的日本語が入ってしまうので、英語モードで使うことをお勧めします。

f:id:kkamegawa:20160319074603p:plain

負荷がかかり始めるまで結構待ちますが、終了するとこんな感じで結果が出ます。

f:id:kkamegawa:20160319074602p:plain

あとから参照することもできます。

f:id:kkamegawa:20160319074601p:plain

エラーはこんな風に見ることができます。ほんとはチャートを見せたかったのですが、JMeterのリスナーにファイル作成系のリスナーを追加しないといけないようです…すいません。

f:id:kkamegawa:20160319075659p:plain

Application Insightsを設定していたので、Application Insights側でも負荷結果を見ると、ちゃんとアクセスされていたことがわかります。

まとめ

VSTSの負荷テストは今までVisual Studioがないとできないものでしたが、よく使われているJMeterに対応したことで、パブリックなWebサイトに対して負荷をかけるときに使いやすくなったかと思います。月当たり20000ユーザまでは無料で使えるので、便利ですよ。