Метрики HttpWebRequest в .NET, аналогичные инструментам Firebug или Pingdom - PullRequest
1 голос
/ 01 января 2012

Я ищу способ измерения каждого шага (HTTP) веб-запроса в .NET, аналогичный временной шкале сетевого водопада Firebug или полностраничному тесту Pingdom.com.

Оба имеют наименьший общий знаменатель, показывающий интервалы времени, требуемые для каждого запроса:

  • Поиск DNS
  • Connect
  • Отправить запрос
  • Ждите ответа
  • Получение ответа

Очевидно, что я могу использовать таймер для измерения веб-запросов методами GetResponse () и GetResponseStream (), но я ищу способ быть как можно более детализированным с максимально возможным количеством измерений.

Как в .NET лучше всего измерить каждый этап жизненного цикла запроса?

Спасибо!

1 Ответ

1 голос
/ 02 января 2012

Вы можете посмотреть на трассировку ETW, чтобы сделать это.AFAIK ETW Tracing выводит тонну информации из многих .NET API.По крайней мере, я вижу это все время, когда использую отражатель для просмотра .NET Framework.

Если ETW не может этого сделать, я почти уверен, что вы можете подключить много важных точек в конвейере:

  • Поиск DNS: выполните поиск самостоятельно и измерьте время.Внутренний поиск HttpWebRequest теперь будет обслуживаться из кэша и выполняться в 0 мс.
  • Connect: это происходит при вызове GetRequestStream ()
  • Отправить запрос: это происходит при вызове GetRequestStream ().Dispose ()
  • Ожидание ответа: это происходит при вызове GetResponseStream ()
  • Получение ответа: это происходит, когда GetResponseStream (). Read () возвращает 0.
...