特集
Windows Server 2003完全ガイド IIS 6.0のパフォーマンスを検証する 5.テスト3:静的なWebページ表示 海津 智宏2003/06/26 |
|
|
最後に、HTMLだけで記述された静的なWebページ(動的なプログラム実行を伴わないページ)の応答性能について調べることにした。この場合、Webサーバの仕事はファイル転送のみなので、当然ながらASP.NETなどの処理に比較するとスループットは大幅に向上するはずだ。このため先の2つのテストのように、1台のクライアント・コンピュータで10セッション(Application Center Test)でテストを実行したところ、サーバ側ではなく、クライアント側のシステム性能(プロセッサやメモリ、ディスクI/Oなどを含めた全体的な性能)が限界に達してしまった(この場合でもネットワークは飽和しなかった)。
これではサーバの性能評価にならないので、このテストだけはクライアント側コンピュータを10台にして、各クライアントからは1セッションずつ接続するようにした。クライアント側の負荷を軽減するために、Application Center Testは使わずに、繰り返しWebページを取得して時間を計測するだけの簡単なアプリケーションを自作してテストに用いた。
クライアント/サーバ間で転送するページ・データとしては、データ・サイズ1byteの非常に小さなページを使用した。これは、ネットワークの帯域を飽和させることなく、サーバに負荷をかけるためだ。少々極端に思えるかもしれないが、セッションの確立とリクエストの処理は通常のWebページ同様に実行されるため、これでもWebページ転送時の負荷をサーバに対してかけることができる(ネットワークが飽和しないことは、パフォーマンス・モニタなどで確認している)。
テスト環境を図示すると次のようになる。
テスト環境 |
今回のテストはサーバ側の負荷が軽く、前2テストと同様のテスト法では、クライアント側がボトルネックになってしまう。そこでこのテストでは、クライアントを10台にして各クライアントから1セッションでアクセスするようにした。 |
テスト環境
このテストのみ、クライアント・コンピュータを10台にし、各コンピュータからの接続セッションを1つにした。またクライアント側の負荷を軽減するため、Application Center Testではなく、自作した接続プログラムを使用している。
■テスト方法
前述したとおり、サイズ1byteのHTML文書を用意する。クライアント10台で1セッション10万回ずつ、総計100万回のHTTPリクエストを送信し、処理完了までの実行を計測して、1秒あたりに処理したリクエスト数を算出する。
■テスト結果
結果は次のようになった。グラフの横軸は、1秒あたりに処理した平均リクエスト数である。グラフが長いほど性能が高い。ご覧のとおり、このテストでIIS 6.0は、IIS 5.0の2倍以上の性能を発揮した。
静的なWebページ表示のテスト結果 |
IIS 6.0はIIS 5.0の2倍以上の性能を発揮した。HTTP処理機能がカーネル・モードに移行した効果だと考えられる。 |
テスト中のプロセッサ使用率をタスク・マネージャで確認すると、IIS 5.0とIIS 6.0で大きな違いがあることが分かる。
IIS 6.0のプロセッサ使用率 |
これに対しIIS 6.0では、ほとんどの処理がカーネル・モードで実行されている(赤い線と緑の線が重なっている)。これは、IIS 6.0でHTTP.SYSがカーネル・モード・ドライバとして実装されたことによる効果と考えられる。 |
これらの結果から、今回のような単純なHTMLデータの転送を行った場合、IIS 6.0では、ほとんどユーザー・モードでの処理が行われずにデータが送信されることが分かる。本稿の前半で述べたように、IIS 6.0では、HTTPの処理を行うHTTP.SYSがカーネル・モード・ドライバとして実装されている。カーネル・モードとユーザー・モードの遷移にはかなりのオーバーヘッドを伴うが、IIS 6.0では、うまくキャッシュにヒットすれば、ユーザー・モードへ遷移することなくリクエストを処理できる。今回のIIS 5.0とIIS 6.0の圧倒的な性能差は、これが強く作用した結果と考えられる。
なお、この図で、IIS 5.0はプロセッサ使用率が100%になっているが、IIS 6.0では70%程度しか使っていない。これは、クライアント側のプロセッサ使用率が100%となってしまい、そちらがボトルネックになったためである。従って実際のIIS 6.0の限界性能は、さらに高いと考えられる。
IIS 5.0テストとIIS 6.0テストを続けて実行し、クライアント側コンピュータのプロセッサ使用率をタスク・マネージャで確かめてみると次のようになった。
クライアント側コンピュータのプロセッサ使用率 | ||||||
グラフの左側はIIS 5.0のテスト、右側はIIS 6.0のテストである。IIS 5.0ではプロセッサ使用率は40%程度だが、IIS 6.0ではほぼ100%になる。 | ||||||
|
グラフから分かるとおり、低速なIIS 5.0では、クライアントのプロセッサ性能にまだ余裕があるが、IIS 6.0のテストに切り替わると、とたんにプロセッサ使用率が100%になる。IIS 6.0では、サーバ側が要求に対して高速にデータを返してくるため、クライアント側の処理が追いつかなくなっているのだ。
現実のWebサイトでは、ここまで完全にキャッシュにヒットすることは考えられないし、ネットワーク帯域などがボトルネックとなって、ここまでIIS 5.0とIIS 6.0で差が生じるほどリクエストの受け付けが可能かどうかも定かでない。しかし、IIS 6.0になって、Webサーバとしての静的なWebページの転送能力が向上していることは確かだろう。
明らかな性能向上が実証されたIIS 6.0
最初に述べたとおり、あくまで参考値でしかないが、すべてのテストでIIS 6.0は良好な結果を残した。Windows 2000+IIS 5.0を利用したWebサイト運営において、サーバのパフォーマンスに不満を感じているなら、Windows Server 2003+IIS 6.0への移行を検討する価値があるだろう。
今回のテストでは、シングルプロセッサ・コンピュータでのみテストを行ったが、米国などのレポートを見ると、Windows Server 2003+IIS 6.0は、特にマルチプロセッサ・システムで優れた性能を発揮するとの報告もあるようだ。大規模サイトの運営では、マルチ・プロセッサ搭載サーバを利用している場合も少なくないだろう。今回は具体的な結果は示していないが、このようなユーザーにとって、Windows Server 2003はより魅力的な選択肢になる可能性もある。
ページ・アクセスのたびにインタープリタによってプログラムが実行されるASPと比較すると、コンパイル済みのコードが実行されるASP.NETでは、性能が大幅に向上する。既存資産の移行問題さえクリアできるなら、OS(Windows 2000)やIIS(IIS 5.0)は変えずとも、.NET FrameworkをインストールしてASP.NETを利用するように変更すれば、(大幅な)性能向上の可能性がある。
■
Windows Server 2003のIIS 6.0では、性能が大幅に向上したというマイクロソフトの主張は、実際に自分たちで用意したテスト環境でも裏付けられた。性能向上の度合いは環境にもよるだろうが、主張自体はウソではないようだ。
しかし今回のテストは、ほんの一例でしかない。読者のさまざまな環境でIIS 6.0が本当に性能を発揮してくれるかどうか、最終的にはご自身で評価しなければならない。しかし少なくともIIS 6.0は、次世代を担うアプリケーション・サーバとして、十分検討に値するソフトウェアだということはできるだろう。
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完全ガイド |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|