アプリケーションのギアを上げよう ― Visual Studio 2010でアプリケーションのパフォーマンス・チューニング ― 第5回 Webサービスのパフォーマンス・チューニング 亀川 和史2011/12/09 |
|
Page1
Page2
|
それでは、Visual Studioの負荷テスト(=ロード・テスト)を実行して、性能を確認する。
メニューバーの[テスト]メニューから[新しいテスト]を選択し、そこで表示される[新しいテストの追加]ダイアログで、「ロード テスト」テンプレートを選択して[OK]ボタンをクリックする。すると、[新しいロード テスト ウィザード]が表示されるので、以下の画面の手順を実行する。
[新しいロード テスト ウィザード]を実行して負荷テストが作成完了すると、以下のように「.loadtest」という拡張子のファイルが追加され、Visual Studio内で以下の左側のように、負荷テストの内容が可視化される。
Visual Studio内で負荷テストの内容が可視化されたところ |
WCF Load Testでの負荷テストを行う場合の注意点として、上の画面の左側のツリーにある[実行設定]配下の実行設定項目(この例では「実行設定1 [Active]」)を選択した状態で、[プロパティ]ウィンドウの[アプリケーション ドメインで単体テストを実行する]プロパティが「True」になっていることを確認してほしい。テスト・メソッドから呼び出されるWCFサービスの初期化処理がstatic(=静的メソッド)になっているため、この設定をTrueにしておかないと、結果が保証されない。
[新しいロード テスト ウィザード]の設定で最大ユーザー数を「200」に設定したままの状態で、IIS側の設定をいくつか変更して(詳細後述)、先ほど作成したロードテストを実行して負荷結果を取得してみた(※ここでは、先ほど作成したWCFサービスをIIS上で実行しているものとする)。最初に負荷が高まって、ある程度のところで収束する結果となった。これはテストとしてはほぼ必ず2秒で終わるという、意外性のないものなので、時間の経過とともにGC(=ガベージ・コレクション)が発生して、性能が低下するといった現象も起きない。
設定が異なる4つのテスト実行ごとに処理に要した時間が異なった結果が得られた。この結果は[テスト結果]ウィンドウからExcelへレポートを出力、見やすい形式でレポートを作成してくれるので、とても便利だ。それぞれの平均応答時間のグラフを以下に掲載する。
変更した設定内容は以下の表のとおりだ。
ID | 設定 |
7 |
初期状態のまま |
8 |
Web.configファイルの<serviceThrottling>タグの maxConcurrentCalls属性の値を「100」に変更 |
9 |
Web.configファイルの<serviceThrottling>タグの maxConcurrentCalls属性の値を「100」に変更。 IISの設定で[ワーカー プロセス数の最大数]プロパティを「3」に変更 |
10 |
IISの設定で[ワーカー プロセス数の最大数]プロパティを「3」に変更 |
4つのテスト実行における設定内容 |
[ワーカー プロセス数の最大数]プロパティは、([ファイル名を指定して実行]ダイアログで「inetmgr」を実行するなどして)「インターネット インフォメーション サービス (IIS) マネージャー」を起動し、左側のツリーで[アプリケーション プール]を選択した状態で、適切なアプリケーション・プールの[詳細設定]を押すと表示されるダイアログ(次の画面を参照)で設定できる。
[ワーカー プロセス数の最大数]プロパティの設定 |
テスト9と10ではほとんど差がない。7と8の差はかなりあるが、7と9、10では40%近く平均応答速度が短くなっている。よって、この場合はワーカ・プロセス数を多くする、もしくはIISの負荷分散を図ると良い結果が出るのではないかと考えられる。
■
いかがだっただろうか? 5回にわたってVisual StudioおよびWindowsの機能による性能分析機能の解説を行ったが、ツールが結果を出してくれても、結果を見てどこが悪くて、どんな処置を行わなければならないかを判断するのは開発者だ。やみくもにいろんなところに手を出さず、仮説を立て、検証して、適用するという反復作業を怠らないでほしい。
INDEX | ||
アプリケーションのギアを上げよう ― Visual Studio 2010でアプリケーションのパフォーマンス・チューニング | ||
第5回 Webサービスのパフォーマンス・チューニング | ||
1.Webサービスのテスト・シナリオの手助けになるWCF Load Test:準備 | ||
2.Webサービスのテスト・シナリオの手助けになるWCF Load Test:実践 | ||
「アプリケーションのギアを上げよう」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -