0

HttpModuleとHttpHandlersに依存し、次のように機能するパフォーマンス測定モジュールがあります。

  1. ページのリクエストがサーバーに届きます。
  2. HttpModule_Beginは、開始時刻をCookieに書き込みます。
  3. HttpModule_Endは、終了時刻をCookieに書き込みます。
  4. クライアントでは、ページの読み込みが終了したら、HttpHandler_ProcessRequestによって処理されるAJAXを介して特別なリクエストを実行します
  5. HttpHandler_ProcessRequestで、前のHttpModule_End(Cookieに格納されている)によって書き込まれた終了時刻からDateTime.Nowを減算し、データベースに格納します。私が言及するのを忘れた1つのこと:すべてのデータはCookieを介して共有されるため、HttpHandlerは、セッションIDなどなしでCookieからデータをプルするだけです...すべての参加者は同じタイムゾーンにいます。

このプロセスはほとんどの場合正常に機能しますが、1時間を超えるネットワーク時間を報告する場合もあります。これは、終了時刻の書き込みからAJAXリクエストの起動までの時間の経過が非常に長いか、AJAXリクエストの起動からアプリサーバーに到達するまでの時間の経過が長いことを示しています。私は、この問題を実際に引き起こしている可能性があるものを理解しようとしています。なぜ操作が単にタイムアウトしないのですか?

4

2 に答える 2

1

トラブルシューティングを拡張します。IISログに値を追加します(HttpContext.Current.Response.AppendToLog(string))。

IISログにエントリが表示され、それらの要求が実際にいつ記録されたかを判断できます。必要なものを追加すると、ログのクエリフィールドに表示されます(W3C形式を使用している場合)。

証拠が示すように、リクエストの遅延が発生している場合は、それを確認できます。これにより、Cookieに記録された値との比較ソースとしてIISログが提供されます。

于 2009-02-26T20:05:46.770 に答える
0

AJAX 要求ハンドラーが計算に使用する終了時間を把握できるようにする一意の ID を含めていますか? そうでない場合は、クライアントで十分な数のページがレンダリングされているため、AJAX 要求がデータベースに書き込まれる終了時刻よりも前に実際に送信され、間違った終了時刻が使用されている可能性があります。

于 2009-02-26T14:21:38.080 に答える