2008-09-16 10 views
2

Единый временной столбец в веб-журнале, естественно, включает в себя синхронизацию клиентской передачи. Для анализа аномалии я хочу различать страницы, которые занимали чрезмерное время строительства от запросов, которые просто имели медленный клиент.ASP.net - Как можно различать время обработки страницы с момента времени передачи клиента

Для буферизованных страниц я просмотрел модель жизненного цикла страницы ASP.NET и не вижу, где я могу подключиться, и кодовая информация измеряет только время обработки страницы до того, как страница будет очищена до клиента.

Возможно, я должен был упомянуть, что моя цель - мониторинг производства (не тест или dev). Кроме того, цель состоит в том, чтобы аннотировать блоги с этим измерением для последующего анализа. В настоящее время мы либерально аннотируем блоги с помощью Response.AppendToLog(). Я считаю, что желание использовать Response.AppendToLog() несколько ограничивает мои потенциальные лог-точки, например, объект-ответ не является жизнеспособным в Application_EndRequest.

Любое понимание будет оценено по достоинству.

ответ

0

Самый лёгкий способ, вероятно, будет использовать последующие события в файле global.asax:

защищены недействительный Application_BeginRequest (отправитель объекта, EventArgs е)
защищены недействительный Application_EndRequest (отправитель объекта, EventArgs е)

Вы также можете реализовать пользовательский httpmodule

0

Это зависит от набора функций инструментов производительности, которые у вас есть. Но если вам просто нужно зарегистрировать время обработки, вы можете следовать этому подходу.

  1. Зарегистрируйте время начала в HttpApplication.BeginRequest события.
  2. Запишите прошедшее время в событии HttpApplication.PreSendRequestContent.

Если вам нужна только конкретная страница, вы можете проверить это в событии BeginRequest. События приложения могут быть присоединены в Global.asax.

0

Если вы хотите войти на определенную страницу, я считаю, что жизненный цикл страниц asp.net начинается с PreInit и заканчивается Disposed, поэтому вы можете записывать все, что захотите, в эти события.

Или, если вы хотите, чтобы войти на каждой странице, так как Боб Dizzle указал, вы можете использовать файл Global.asax, который имеет тысячи событий на выбор: http://msdn.microsoft.com/en-us/library/2027ewzw.aspx

2

Вы можете использовать секундомер в BeginRequest и PreSendRequestContent, как указано в двух других ответах, или вы можете просто использовать временную метку запроса в PreSendRequestContent.

К примеру, на SingingEels, я добавил это в нижней части моего мастер-страницы (да, это хак): <%=DateTime.Now.Subtract(HttpContext.Current.Timestamp).TotalSeconds %>

Таким образом, я могу видеть, как долго любые страницы взяли на самом деле выполнить на сервере, включая попадание в базу данных и т. д.

+0

Ahh Мне это нравится. Возможно, мне придется это реализовать и проверить. Спасибо за совет! – 2008-10-03 05:22:51

0

Вы также можете провести тестирование прямо на веб-сервере. Тогда время ClientTransmission становится эффективно 0.

 Смежные вопросы

  • Нет связанных вопросов^_^