Профилирование для начинающих Qn — ASP .NET MVC + Mini-Profiler + Chrome Developer Tools

введите здесь описание изображения

Два раздела, выделенные выше.


1-й — мини-профайлер, сообщающий мне, сколько времени занимает выполнение контроллера/действия (вызывается через ajax)

87 мс


2-й — Chrome Web Inspector сообщает мне, сколько времени занимает выполнение одного и того же запроса ajax.

535 мс


Используя glimpse, я вычислил, что выполнение других событий жизненного цикла (базовый контроллер/фильтры) занимает ~22 мс.

Ищу руководство, чтобы выяснить, куда уходит остальное время.

Спасибо.


Изменить

Это почти соответствует (отклонение составляет ~ 10–20 мс в обоих значениях — Mini-Profiler и Chrome Inspector).

Эти результаты относятся к онлайн-запросу к рабочему серверу (VPS), на котором работает IIS 7.5. Когда эти числа измеряются на машине разработчика (локальный хост с IIS Express), разница в результатах Mini-Profiler и Chrome Inspector не так значительна.


person Sameet    schedule 19.09.2012    source источник
comment
это последовательно? это происходит, когда вы работаете непосредственно с iis, а не с iis express или с веб-сервером?   -  person Sam Saffron    schedule 20.09.2012


Ответы (1)


Поскольку эти запросы относятся к онлайн-ресурсу, вам необходимо учитывать задержку.

Например, возьмите это:

изображение

Время сервера составляет всего 118 мс, однако поиск DNS занимает 598 мс, подключение занимает еще 205 мс, а ответ возвращается только + 1173 мс после того, как я посетил страницу. Наконец, DOM начинает рендеринг только через 1,27 секунды.

Биты сервера учитывают только время, проведенное на сервере внутри вашего приложения.

Вы должны добавить к этому.

  1. Время, необходимое для разрешения dns.
  2. Время, необходимое для подключения (если нет активности)

[время ожидания]

  1. Время, необходимое для отправки TCP-пакета с запросом ресурса
  2. Накладные расходы на веб-сервер / прокси-сервер
  3. Время сервера (ярко-красное число)
  4. Время, необходимое первому TCP-пакету, чтобы вернуться к вам.

[/время ожидания]

  1. Время, которое требуется остальным пакетам, чтобы найти обратный путь к вам. (читайте об окнах перегрузки TCP)
  2. Время, которое требуется браузеру для разбора возвращаемого материала
  3. Время, необходимое для рендеринга

(и еще есть взаимозависимость JavaScript и CSS, которую я не буду здесь затрагивать)

person Sam Saffron    schedule 20.09.2012
comment
Как определить продолжительность поиска домена и подключения для моего вызова ajax? Эти значения не видны через Mini-Profiler для вызова. - person Sameet; 20.09.2012
comment
до w3.org/TR/2011/WD-resource-timing- 20110524 находится в веб-браузерах, получение мелких данных невозможно. вы можете получить это только из временной шкалы fircug или chrome и т. д. - person Sam Saffron; 21.09.2012
comment
Firebug сообщает мне, что DNS-поиск и подключение не занимают много времени. Все время уходит на ожидание. Означает ли это, что все это время находится в эфире? Если это также включает в себя некоторые накладные расходы на веб-сервере, как вы упомянули, может быть, есть способ точно узнать, куда он идет? - person Sameet; 21.09.2012
comment
@SaM, скорее всего, это все время в сети, просто пропингуйте свой сервер, вам нужно добавить хотя бы это время ко всему, что вы измеряете. - person Sam Saffron; 21.09.2012
comment
250 мс на пинг. Так что теперь у меня есть ~ 200 мс неучтенных (неизмеримо) :) Может быть, я должен просто оставить это. Я просто зациклился на том, могу ли я что-нибудь сделать, чтобы ускорить это еще больше. Там задействовано немного запросов к БД, поэтому я считаю, что 100 мс, затраченные кодом на разворот, - это неплохо; а остальное время кажется неизбежным, с очень небольшими возможностями для улучшения и не очень неоптимальным, верно? - person Sameet; 21.09.2012