Измерение производительности сети в asp.net 2.0 через странность HttpHandlers и HttpModules - PullRequest
0 голосов
/ 26 февраля 2009

У нас есть модуль измерения производительности, который использует HttpModule и HttpHandlers и работает следующим образом:

  1. На сервер поступает запрос на страницу.
  2. HttpModule_Begin записывает время начала в cookie.
  3. HttpModule_End записывает время окончания в cookie.
  4. На клиенте, когда загрузка страницы завершена, запускается специальный запрос через AJAX. это обрабатывается HttpHandler_ProcessRequest
  5. В HttpHandler_ProcessRequest вычтите DateTime.Now из времени окончания, записанного предыдущим HttpModule_End (который хранится в cookie), и сохраните его в базе данных. Я забыл упомянуть одну вещь: все данные передаются через cookie, поэтому HttpHandler просто извлекает данные из cookie без идентификаторов сессии и т. Д. Все участники находятся в одном часовом поясе.

Этот процесс в большинстве случаев работает нормально, но есть некоторые случаи, когда сетевое время превышает час! Это указывает на очень большой промежуток времени между записью времени окончания и запуском запроса AJAX или большим промежутком времени между запуском запроса AJAX и временем, которое он получает на сервер приложений. Я пытаюсь понять, что может быть причиной этой проблемы в дикой природе. Почему время операции просто не истекло?

Ответы [ 2 ]

1 голос
/ 26 февраля 2009

Расширение возможности устранения неполадок: добавьте значения в журнал IIS ( HttpContext.Current.Response.AppendToLog (string) ).

Журнал IIS покажет ваши записи, и вы сможете определить, когда эти запросы были фактически записаны. Вы можете добавлять все, что хотите, и это отображается в поле запроса журнала (при условии, что вы используете формат W3C.)

Если вы испытываете задержки в запросах, как свидетельствуют факты, вы можете проверить это. Это даст вам журнал IIS в качестве источника сравнения с записанными значениями в файлах cookie.

0 голосов
/ 26 февраля 2009

Включаете ли вы какой-то уникальный идентификатор, который позволяет обработчику запросов AJAX определить, какое время окончания использовать для расчета? Если нет, возможно, на клиенте было отображено достаточно страниц, чтобы запрос AJAX действительно поступил до того, как время окончания было записано в базу данных, и он использует неправильное время окончания.

...