IIS6 で奇妙な動作をする ASP.Net アプリがあります。アプリ自体は単純な ASP.Net 2.0 Webforms の取引であり、そこでは特に奇妙なことは何も起こっていません (パイプラインにはいくつかの HTTP モジュールがありますが、私はそれらを奇妙だとは考えていません :) )。私が理解していないのは、ページの実行時間です。より具体的には、ASP.Net トレース (trace.axd) によって報告された時間とクライアント (Fiddler) によって観察された時間の差です。アプリが開発者のボックス (WinXP、IIS5.1) で実行されている場合、ASP.Net と Fiddler によって報告される時間は非常に近いです。
ページ実行時間: 0.0919834 Fiddler の合計シーケンス時間: 0.1560980
IIS から Fiddler に 5KB 相当のデータを取得するのに 60 ミリ秒が費やされていることは理解できます (どちらも同じマシンで実行されます)。ここで、コードをサーバー (Win2k3、IIS6) に移動すると、状況が劇的に変化します。
ページ実行時間: 0.1702014 フィドラーの合計シーケンス時間: 0.5156283
これは同じページで、Fiddler は同じマシンでコードを実行しています。同じ 5KB を配信するのに突然 350ms かかるのはなぜですか?
PS。両方のマシンで、実際のマシンのホスト名( http://machinename/app/page.aspx ( http://localhost/app/page.aspxではなく) など) を介して URL にアクセスすることによって結果が取得されます。
PPS。構成に関しては、開発ボックスとサーバーのセットアップはできる限り近くにあり、どちらもまったく同じ web.config を使用します。どちらも統合認証を使用して DB (SQL サーバー) にヒットし、その結果、アプリはドメイン アカウントで実行されます。アプリはフォーム認証を使用し、偽装しません (つまり、常に同じアカウントで実行されます)。現在、IIS5 でこれが機能する方法は IIS6 とは異なります。IIS5 では、アカウントは machine.config のタグで指定され、IIS6 では AppPool 設定です。セットアップは両方の環境でかなり典型的なようで、350 ミリ秒の遅延が発生することは想像できません...