特集 Windows Server 2003完全ガイド
IIS 6.0のパフォーマンスを検証する

3.テスト1:Microsoft .NET Pet Shop

海津 智宏
2003/06/26

 まずは、実運用システムに近い環境で、IIS 5.0とIIS 6.0のパフォーマンスの違いを調べるために、Microsoft .NET Pet Shop(以下MSPetShop)を使用して性能評価を行った。これは、そもそもはSun MicrosystemsによるJava Pet StoreというJavaのサンプル・アプリケーションに対し、マイクロソフトがその機能をASP.NETで構築し直したものである。これを利用することで、JavaとASP.NETの性能比較を行える。具体的には、仮想のペットショップ内に28種類の商品(ペット)が用意されており、サインイン(ユーザー認証)から商品の選択、購入までができるようになっている。MSPetShopでは、商品の情報や顧客情報はSQL Serverによるデータベースに保存されており、実行時にはこのSQL Serverへのアクセスが発生する。

 なお、MSPetShopの最新バージョンは2003年5月にリリースされた3.0だが、こちらは動作環境が「Windows Server 2003推奨」となっており、Windows 2000 Serverが不利になる可能性があったため、今回のテストではあえてバージョン2.0を用いた。

Microsoft .NET Pet Shop 2.0のトップページ
ASP.NETで構築された仮想的なオンライン・ショップ・サイト。ペットを選んでショッピング・カートに入れ、チェックアウト(清算)するなど、本格的なショッピング・サイトの挙動をシミュレートしている。

■テスト環境
 このテスト1と次のテスト2では、Visual Studio.NET Enterprise Architectに付属するApplication Center Testを使用して、クライアント側の処理(Webサーバに対するアクセス処理)をシミュレートした。

 Application Center Testは、Webアプリケーションの性能評価や、クライアントからの過負荷を意図的にかけて、サーバのスケーラビリティ分析などを行うためのツールである。具体的には、Webサーバとクライアント間でやり取りされるHTTPの通信内容をキャプチャし、そのHTTPリクエストの内容をクライアントに成り代わって送信することができる。このとき、任意の数のセッションを指定できるので、1台のコンピュータを使って、あたかも複数クライアントがサーバにアクセスする状況を再現することも可能である。Application Center Testの詳細については、以下のマイクロソフトのページが参考になる。

 今回のテストでは、MSPetShopにサインインし、ペット5匹を購入してサインアウトするという一連動作を5分間繰り返し、1秒あたりに処理したリクエスト数の平均値を算出する。このときクライアント側コンピュータは1台のみで、Application Center Testの同時接続セッション数を変えながら結果を測定する比較を行う。テストの構成を図示すると次のようになる。接続したクライアント・コンピュータは1台だけだが、Application Center Testで接続セッション数を変更することで、複数クライアントからアクセスした状態をシミュレートしている。

テスト環境
接続したクライアント・コンピュータは1台だけだが、Application Center Testで接続セッション数を変更して、複数クライアントからアクセスした状態をシミュレートしている。

■具体的な通信セッションの内容
 テストの間、サーバ−クライアント間でやり取りされる通信セッションの詳細は以下のとおりである。なおHTTPによる通信では、IIS 5.0、IIS 6.0双方のテストの環境において、HTTP/1.1のKeep-Aliveを使用する。Keep-Aliveは、1回のTCP接続で複数のHTTPリクエストを処理する機能であり、ページを開くたびに接続を確立する旧来の場合と比較して、プロセッサへの負荷を低減し、より高いスループットを実現できる。このKeep-Aliveは、HTTPの現行バージョンであるHTTP/1.1では標準的に使われるので、今回のテストにおいても、トップページの表示からサインアウトまで、いったん確立された接続は切らずに処理するようにした。

トップページの表示(1 aspx, 1 css, 8 gif, 1 jpg)
サインインページの表示(1 aspx, 6 gif)
既存のユーザーとしてサインイン(1 aspx)
「Fish」を選択(1 aspx)
「Angelfish」を選択(1 aspx, 1 gif)
「Large」をカートに追加(1 aspx, 6 gif)
「Dogs」を選択(1 aspx)
「Bulldog」を選択(1 aspx)
「Male Adult」をカートに追加(1 aspx)
「Reptiles」を選択(1 aspx)
「Iguana」を選択(1 aspx)
「Green Adult」をカートに追加(1 aspx)
「Cats」を選択(1 aspx)
「Manx」を選択(1 aspx)
「Tailless」をカートに追加(1 aspx)
「Birds」を選択(1 aspx)
「Amazon Parrot」を選択(1 aspx)
「Adult Male」をカートに追加(1 aspx)
「More」をクリック(2ページ目を表示)(1 aspx, 1 gif)
「Proceed to Checkout」をクリック(1 aspx, 1 gif)
「More」をクリック(2ページ目を表示)(1 aspx)
「Continue」をクリック(1 aspx)
「Continue」をクリック(デフォルトのデータのまま購入)(1 aspx)
「Continue」をクリック(1 aspx)
サインアウト(1 aspx)
HTTPによる通信セッションの詳細
カッコ内は、各処理に含まれるASPXや画像データの数。このテストでは、1セッションで合計50回のリクエストを行う。やり取りされるリクエストの内訳は、aspxページ25ページ、gif画像23枚、jpg画像1枚、CSS1つである。
 
ショッピング・カートを表示したところ
購入を指示したペットの一覧をカートで確認したところ。

課金情報の入力
実際のECサイトと同様に、課金先情報を入力する。入力情報には、MSPetShopにあらかじめ登録されているサンプル情報をそのまま使用した。

■テスト結果
 テスト結果を次に示す。グラフの横軸は、クライアント側のApplication Center Testで実行したセッション数、グラフの縦軸は、1秒当たりにサーバが処理した平均HTTPリクエスト数である(従って数値が大きいほど性能が高い)。当然ながら、セッション数が増えれば増えるほど、サーバにかかる負荷は高くなる。

Microsoft .NET Pet Shopテストの結果
セッション数が増加するにつれ、IIS 6.0とIIS 5.0の性能差が広がる。IIS 6.0の限界性能は、IIS 5.0のそれに比べ10%程度高い。

 グラフから分かるとおり、少ないセッション数(1〜3セッション)では、IIS 5.0とIIS 6.0の性能は均衡している。しかしそれ以降、セッション数が増加してもIIS 5.0の性能がほとんど頭打ちとなって変化がないの対し、IIS 6.0では少しずつ処理数が増加している。つまり、サーバの負荷が大きくなると、IIS 6.0がその性能の高さを発揮する。IIS 5.0ではセッション数が5程度、IIS 6.0では10程度でサーバの処理性能が限界に達する。この時点でパフォーマンス・モニタで確認したところ、限界に達しているのはプロセッサ性能だった(いずれのテストでも、ネットワークは飽和していない)。IIS 6.0の限界性能は、今回のテストではIIS 5.0の1.1倍程度、つまり約10%高速という結果になった。


 INDEX
  [特集] Windows Server 2003完全ガイド
  IIS 6.0のパフォーマンスを検証する
    1.IIS 6.0の基礎知識
    2.IIS 5.0/IIS 6.0ベンチマーク・テスト
  3.テスト1:Microsoft .NET Pet Shop
    4.テスト2:シンプルなASP/ASP.NET
    5.テスト3:静的なWebページ表示
 
目次ページへ  Windows Server 2003完全ガイド


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間