はじめに
Webサイトをリリースして、著名なメディアに取り上げられるなどの何らかの事情で、突発的にアクセスが増えてダウンした、ということはよくあります。そういうことがなくても、導入の要件で最低アクセス人数を指定されているということもよくあります。
Visual Studioの負荷テスト機能をはじめ、Load Runnerなどの商用製品やjmeterのオープンソースのツールを使うこともあるでしょう。VSTSはクラウドサービスらしく、Azureのデータセンターから負荷をかけるという機能があります。
何度か@ITなどで紹介したこともありますが、さらに進化を遂げています。今日は簡単なURLを指定して負荷をかける機能を紹介します。
URLベースのシナリオを作成する
Load Testをクリックすると、初期画面が表示されます。今日紹介するのはURLとhttp archiveです。
右から二番目にあるURLの下にあるCreate testをクリックすると、シナリオ作成画面になります。
アクセスをかけるURLおよび、httpヘッダ、クエリパラメータを指定します。
こんな風にトップページ、About, ContactのURLを順番にアクセスするというシナリオを作りました。
Settingsで負荷の設定を行います。
- Run duration:負荷をかける時間です
- Load pattern:均等にかける(Constant)、徐々に上げる(step)
- Max vusers:シナリオにおける最大ユーザーです。20000ユーザー/月まで無償で実行できます。ただし、負荷の時間によって、25×実行時間でユーザー数を消費します。ちなみにこのパターンでは250ユーザーを消費します。
- warmup duration:負荷をかけるまでの待機秒数です
- Browser Mix:ChromeとIEのアクセス比率を指定します。
- Load location:どのデータセンターから負荷をかけるかという指定です。東京と大阪も指定できます。
負荷をかけるとこのような結果が表示されます。chartをクリックすると、グラフで表示されます。
性能、スループット、エラー数が表示されます。
Diagnosticsでは発生した例外、情報が表示されます。これはAzure App ServiceのBasic B1で動いているので、CPUが1つです。Basic B2の2CPUに変更して同じ負荷をかけてみます。
数値とグラフも変わっています。
しかし、このような数値だけではわかりづらいですね。そういうときのために設定前後の実行結果を選択して、"Compare two runs"をクリックすると、チューニング前後で比較できます。
baseline(最初に取得したデータ)と現在のデータで比較して、どのくらい負荷が減ったか一目でわかります。
…減ったと言いたいところですが、App Serviceのスケールを変えた後の再起動後の初回起動で性能が悪化してますね(^^;。負荷テストのときはこういうことがあるので、気を付けてください。
ブラウザのリクエストをそのまま使用する
har(HTTP archive)を取得する
負荷テストのリクエストの作成はいつも結構苦労します。fidderでキャプチャして、リクエストを見ながらということが多いのではないでしょうか。
VSTSの負荷テストではブラウザが発行したリクエストを保存して転用する機能があります。
Chromeのf12ツールのネットワークタブでリクエストを右クリックして、「生を付けて保存」すると、該当リクエストをharファイルとして保存できます。
Edgeでも同様にf12開発者ツールで保存できます。
HTTP Archive based testを作成
Newから"HTTP Arvhice based test"をクリックします。
ダイアログが表示されるので、保存したharファイルを指定します。
リクエストが追加されます。追加されるリクエストは外部のCDNなども入っているので、不要なリクエストは消してください。
こんな風に同じリクエストが作れました。http headerとかQueryStringも入るので、便利です。ただし、リクエストごとに保存して追加という手順を踏まないといけないんですかね?この辺は拡張機能か何かあってもよさそうに思いますが…。
自動的にリダイレクトするようなサイトだと難しいかもしれませんが、自分でヘッダやQueryString設定しなくてもいいのは便利だと思いますので、使ってみてください。