0

В настоящее время я изучаю проблемы с производительностью в нашем веб-приложении (MVC2, архитектура архитектуры S #, свободно nHibernate), используя MVC-мини-профилировщик, который является отличным. Я использую атрибут действий или контроллеров, которые я хочу рассказать, как обсуждалось в этом сообщении Getting more "granularity" from the MVC Mini Profiler.MVC OnResult Выполнение проблем с производительностью

Я нахожу, что много времени тратится между OnResultExecuting и onResultExecuted, я полагал, что это должно быть рендеринг представления, так что если бы там возникла сложная логика, это было бы проблемой, но я поставил количество профайлеров вызывает части просмотров, в том числе одну вокруг всей главной страницы, но есть еще много времени (около 4-5 секунд в некоторых обсаженных), которое полностью не учтено.

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

Любые указатели будут оценены по достоинству.

ответ

2

Вы создаете модели представлений для перехода к вашим представлениям для рендеринга? Если модель представления имеет набор чего-то, и эта коллекция заполняется с помощью запроса Linq в NHibernate, то возможно, что запрос Linq выполняется как часть рендеринга представления. Это означает, что некоторые из 4-5 секунд могут быть заняты доступом к базе данных. Как правило, любой код, который создает модель представления, должен гарантировать, что все коллекции в этой модели представления полностью заполнены, а не IQueryables, которые еще не были перечислены.

Звучит ли это как возможность? Если это так, использование NHProf могло бы помочь его уловить.

+0

Спасибо, я использовал NHProf, чтобы избавиться от безумного количества запросов к базе данных, которые мы делали, и это действительно помогло решить проблемы с производительностью, особенно в этом разделе, но я не был мудрее относительно того, почему это происходит в эта часть цикла страницы, запрашивающая ленивые загруженные объекты/IQueryables, объяснит это, поэтому спасибо. – Ben

1

Мое лучшее предположение заключается в том, что он фиксирует UnitOfWork (ISession в NHibernate). Это может потребовать много времени.

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