Проблеск, делающий все в 50 раз медленнее

#asp.net #glimpse

#asp.net #проблеск

Вопрос:

Я использовал glimpse, чтобы попытаться решить некоторые проблемы с медленной страницей, только чтобы обнаружить, что причиной является glimpse. Запросы страницы составляют более 30000 секунд, без проблеска они выполняются мгновенно. Итак, я преследовал призраков.

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

У меня что-то настроено неправильно или это всегда так медленно

Комментарии:

1. Только на некоторых страницах все работает медленнее? Используют ли эти страницы какие-либо двоичные параметры для sql-запроса? Требуется ли время на сервере или на клиенте? Есть ли какая-либо сложная / необычная привязка к модели? Просматриваете ли вы модели своих моделей данных, и если да, то есть ли какие-либо отложенные загруженные свойства?

2. Дальнейшая отладка с включенным проблеском приводит к тому, что хэши возвращают десятки тысяч записей, которые замедляют все. Без проблеска эти хэши не создаются. вот пример puu.sh/9wYLR/7ee28f3b14.png этот код никогда не запускается, когда glimpse не включен.

3. Используется ли этот хэш-набор / модель EF или какова ваша технология доступа к данным?

4. Нет, этот фрагмент кода никогда не выполняется, если glimpse не запущен.

5. Используется ли он в модели ожидания или в качестве модели представления?

Ответ №1:

Обновите свой glimpse элемент web.config, чтобы в нем были следующие записи:

 <glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
    <tabs>
        <ignoredTypes>
            <add type="Glimpse.Mvc.Tab.ModelBinding, Glimpse.Mvc3" />
            <add type="Glimpse.Mvc.Tab.Metadata, Glimpse.Mvc3" />
        </ignoredTypes>
    </tabs>
    <inspectors>
        <ignoredTypes>
            <add type="Glimpse.Mvc.Inspector.ModelBinderInspector, Glimpse.Mvc3" />
        </ignoredTypes>
    </inspectors>
</glimpse>
  

Комментарии:

1. Это сработало для меня, у меня было несколько свойств отложенной загрузки в моей модели представления, одно из которых вызывало 2-секундный вызов базы данных. с этими записями в web.config это свойство больше не загружается. есть ли шанс, что вы могли бы предоставить некоторую информацию о том, что это на самом деле делает?

2. Я поиграл с этим, и вам не нужно отключать вкладку метаданных, это только тривиальная разница в скорости. Однако привязка к модели … в среднем от 66 мс до 1000 мс

3. Разные вкладки имеют разные эффекты. Важно учитывать, где все идет медленно. Это означает, что в профилировании, которое мы сделали, самая медленная часть Glimpse в типичном приложении — это преобразование данных в формате json для клиента — обратите внимание, это не происходит в потоке исходных запросов. Так что, если вы видите какие-либо проблемы, стоит проверить, откуда они берутся.

Ответ №2:

Перейдите /Glimpse.axd и снимите все дополнения / вкладки Glimpse. Это даст вам конфигурацию XML, необходимую для копирования и вставки в ваш web.config. В моем случае это были маршруты, вероятно, из-за широкого использования атрибутивной маршрутизации. Другие упоминали кеш и метаданные, поэтому начните с игнорирования всех, затем прокомментируйте несколько за раз, пока не найдете то, что замедляет Glimpse.

Обратите внимание, что приведенная ниже конфигурация может не работать для вас, если у вас установлены другие дополнения или версии.

   <glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
    <tabs>
      <ignoredTypes>
<!--        <add type="Glimpse.Ado.Tab.SQL, Glimpse.Ado" />-->
<!--        <add type="Glimpse.AspNet.Tab.Cache, Glimpse.AspNet" />-->
<!--        <add type="Glimpse.AspNet.Tab.Configuration, Glimpse.AspNet" />-->
<!--        <add type="Glimpse.AspNet.Tab.Environment, Glimpse.AspNet" />-->
<!--        <add type="Glimpse.AspNet.Tab.Request, Glimpse.AspNet" />-->
        <add type="Glimpse.AspNet.Tab.Routes, Glimpse.AspNet" />
<!--        <add type="Glimpse.AspNet.Tab.Server, Glimpse.AspNet" />-->
<!--        <add type="Glimpse.AspNet.Tab.Session, Glimpse.AspNet" />-->
<!--        <add type="Glimpse.Core.Tab.Timeline, Glimpse.Core" />-->
<!--        <add type="Glimpse.Core.Tab.Trace, Glimpse.Core" />-->
<!--        <add type="Glimpse.Mvc.Tab.Execution, Glimpse.Mvc5" />-->
<!--        <add type="Glimpse.Mvc.Tab.Metadata, Glimpse.Mvc5" />-->
<!--        <add type="Glimpse.Mvc.Tab.Views, Glimpse.Mvc5" />-->
<!--        <add type="Glimpse.NLog.NLogTab, Glimpse.NLog" /> -->
      </ignoredTypes>
    </tabs>
    <runtimePolicies>
    </runtimePolicies>
  </glimpse>