Visual StudioとVisual Studio Team Servicesを使えば、任意の(残念ながら日本はまだありません)Azureデータセンターから特定のWebサイトに負荷をかけることができます。
クラウドベースのロードテスト | Visual Studio Online
負荷をかけるサイトはASP.NETに限らないのですが、Visual Studioを使わなければなりませんでした。ところが、先日のバージョンアップでApache JMeterにも対応しました。
実際にやってみましょう。まず、簡単なJMeterの負荷シナリオを作っておきます。必ず最新版(2.13)を使ってください。
Visual Studio Team ServicesのLoad TestからApache JMeter testを選びます。
Target Scriptに作成したjmxファイルを指定します。
Supporting Filesには負荷テストで使用するパラメータなどを格納したcsvファイルを指定します。今回は使ってないので指定しません。
あとはAgentの数、負荷の時間、どのデータセンターから実施するか、ということを選ぶだけです。Run Testを実行すればかまいません。しかし、実行するとこんなエラーが出ることがあります。
VSTS Load Testでjmxが実行できない場合、この辺が理由になります。
- jmxファイルの中身(テスト計画名など)に日本語を使わない
- 「結果を表で表示」などのインタラクティブな出力を伴うリスナーを追加しない
JMeterを日本語UIで使うと自動的日本語が入ってしまうので、英語モードで使うことをお勧めします。
負荷がかかり始めるまで結構待ちますが、終了するとこんな感じで結果が出ます。
あとから参照することもできます。
エラーはこんな風に見ることができます。ほんとはチャートを見せたかったのですが、JMeterのリスナーにファイル作成系のリスナーを追加しないといけないようです…すいません。
Application Insightsを設定していたので、Application Insights側でも負荷結果を見ると、ちゃんとアクセスされていたことがわかります。
まとめ
VSTSの負荷テストは今までVisual Studioがないとできないものでしたが、よく使われているJMeterに対応したことで、パブリックなWebサイトに対して負荷をかけるときに使いやすくなったかと思います。月当たり20000ユーザまでは無料で使えるので、便利ですよ。