4

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 ミリ秒の遅延が発生することは想像できません...

4

3 に答える 3

4

MSDN サブスクリプションで得た数少ない貴重なサポート インシデントの 1 つを費やした後、「これまでの時間はどこに費やされたのか」という質問に対する正しい答えをついに知りました。つまり、パイプラインにある HTTP モジュールで時間が費やされます。ASP.Net trace.axd によって報告される時間測定は、.aspx ページ自体で費やされた時間のみを記録し、モジュールは含まれません

これを確認する簡単な方法の 1 つは、ETW (Windows のイベント トレーシング) を使用することです。説明は次の とおりです (この投稿は、彼らが私たちのケースを調べた後に書かれたものだと強く思います:)) 上記の優れた説明に付け加えることができるのは、トレース出力を分析するために LogParser の代わりに SvcTraceViewerを使用したことです。

更新: 上記のアプローチは Windows Server 2008 でも機能します 。トレースがインストールされていることを確認してください。

于 2009-02-27T00:09:19.977 に答える
1

呼び出している URL でトレース ルートを実行し、それらを比較します。マシンの内部にとどまっている開発者のマシンに賭けていますが、運用マシンでは外部に出て、IP アドレスを介して戻ってきます。

この場合は、これをホスト ファイルに追加してみてください (c:\windows\system32\drivers\etc\hosts

www.mysite.com    127.0.0.1

これにより、リクエストを行うためにマシンの外に出ることがなくなります。応答時間が互いに一致し始めるはずです。

アップデート

新しい更新を考えると。サーバーに負荷がかかっている場合、本番環境でのテスト中に、これが違いの原因となる可能性があります。これは、1 つだけを配信しようとしている開発マシンよりも多くの要求を積極的に配信しようとしているためです。

または、IIS の 2 つの異なるバージョン (XP の 5.1 と 2003 の 6.0) をテストしていることが原因である可能性があります。2 つの環境で同じソフトウェアを実行していない限り、実際には違いを説明できません。

于 2009-02-19T18:24:00.277 に答える
0

アプリは両方のボックスで同一のリリース構成で実行されていますか?

編集: リクエスト パイプラインは IIS5 と IIS6 の間で大幅に変更されました。trace.axd は ASP.NET 部分のみを参照し、新しいアプリ プールと HTTP.Sys コンポーネントは参照しません。

構成は IIS6 で少し調整できると思いますが、軽量の非運用 Web サーバー (IIS5) と、管理する個別のアプリケーション プールとより多くの抽象化レイヤーを備えた堅牢な Web サーバーの違いを見ていることでしょう。

于 2009-02-19T19:04:16.183 に答える