5

いくつかの複雑な操作とデータベース呼び出しを行う ASPX Web ページがあります。ASP.NET Development Server (Cassini) を実行して Web ページを表示すると、約200msかかります。

次に、コードの変更や構成の変更を行わずに、Web サイトをローカル マシン IIS 7 に展開し、同じ Web ページを再度表示します。10 倍遅い2.0 秒かかります。

IIS は Cassini よりも高速 (または少なくとも同程度) にすべきだと思いました。

さらに調査するために、新しいページ test1.aspx を作成しました。このページには、Page_Load で 9000 万回実行される空の for ループしか含まれていません。Cassini では、約 200ms かかります。IIS では、300 ミリ秒かかります (50% 遅くなります)。

IIS が Cassini より遅くなる理由は何でしょうか? または、より良い質問かもしれませんが、IIS を少なくとも Cassini と同じ速度で実行するにはどうすればよいでしょうか?

4

1 に答える 1

10

迅速で短い答え:

Web アプリケーションが使用するアプリケーション プールを構成して、32 ビット アプリケーションを有効にします。

[32 ビット アプリケーションを有効にする] を True に設定します。

詳細なチュートリアル:

いくつかのパフォーマンス プロファイリング ツール(一部は無料) を使用して、パフォーマンスを比較し、ボトルネックを見つけました。無料のEQATEC Profilerは、Cassini と IIS を実行して生成された 2 つのレポートを比較し、問題の原因となっている方法を特定するのに十分です。ただし、メソッドに含まれる行が多すぎるため、問題の原因となっている行を正確に特定できませんでした。

それならRedgate ANTSが重宝します。行レベルの詳細でメソッドをプロファイリングすると、RegEx の実行が非常に遅いことがわかりました。

さらに検索すると、ここで答えが得られます。RegEx.Match は、IIS では Development Server (Cassini) と比較してはるかに低速です。IIS 7 で Windows 7 64 ビットを使用しています。「32 ビット アプリケーションを有効にする」を True に設定すると、問題が解決します。


また、IIS を 32 ビットまたは 64 ビットとして実行する場合の少し関連する読み物:

64 ビット サーバーは、 IIS やそれが管理するワーカー プロセスなどの処理サーバーよりも、SQL Server などのデータベースやその他のデータ管理サーバー (たとえば、Exchange のようなエンタープライズ メール サーバー) に使用する場合にはるかに効果的です。

ルックアップごとに 64 ビット ポインターが必要になるため、すべてが少し遅くなります。

出典: 64 ビット OS で IIS を 32 ビットと 64 ビットで実行することの長所と短所は何ですか?

于 2012-10-18T12:02:58.437 に答える