Высокая загрузка ЦП после завершения рендеринга страницы Razor

#asp.net-mvc #razor

#asp.net-mvc #razor

Вопрос:

Я получаю странное поведение Razor — после рендеринга веб-страницы объемом около 300 разделов с некоторой информацией о пользователе в каждом, отображаемой в цикле, процессор продолжает работать при 100% одноядерной загрузке около 30 секунд. Никаких операций ввода-вывода, никаких изменений в использовании памяти, просто циклы записи процессора.

Страница отображает данные из базы данных, 300 записей. Это не ошибка базы данных — я проверил это, отключив доступ к БД, заменив записи фиктивными данными и получив такое же поведение. Страница отображается и отображается в браузере, другие запросы не активны, поэтому код на стороне сервера (по крайней мере, мой код) простаивает.

UPD: проблема появляется ТОЛЬКО при запуске сайта из Visual Studio. Независимо от того, размещен ли он в IIS Express или IIS. Оба запущенных .NET 4.5.1, MVC 5.1.2. Открытие одного и того же сайта, когда devenv не запущен, устраняет проблему.

Может кто-нибудь посоветовать — сталкивались ли вы с подобной проблемой и как вы с ней справились, и как я могу определить фрагмент кода, который вызывает проблему?

РЕШЕНО! Это ссылка для браузера! http://blogs.msdn.com/b/webdev/archive/2013/06/28/browser-link-feature-in-visual-studio-preview-2013.aspx Отключение его решает проблему.

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

1. Какой процесс, в частности, использует все ресурсы процессора. Это devenv.exe (процесс Visual Studio / IIS Express)? Просто потому, что ресурсы процессора увеличиваются, не обязательно даже означает, что это связано. Это может быть какое-то программное обеспечение безопасности, которое испугалось или сотни других вещей. Если это действительно devenv.exe так, вы работаете в режиме отладки? В IIS Express все еще происходит много вещей при запуске в режиме отладки даже после возврата страницы, ни одна из которых на самом деле не является проблемой для рабочего сайта.

2. Также скачки процессора могут маскировать другие проблемы. Например, если ваш компьютер заменяет память из ОЗУ, процессор и жесткий диск будут скачкообразными, но использование памяти может казаться стабильным. В этом случае вы можете просто не использовать машину, достаточно мощную для работы с Visual Studio (Win7). Короче говоря, вы все еще недостаточно диагностировали проблему, чтобы мы могли вам по-настоящему помочь.

3. это процесс IIS, w3wp.exe — Я наблюдал такое же поведение в IIS express и IIS. Процессор четырехъядерный, 4 ГГц, 16 гигабайт, для этого конкретного приложения не установлено ограничений на объем оперативной памяти.

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

5. @Andy, это хороший вопрос — вы должны опубликовать свои выводы в качестве ответа, иначе он будет выглядеть как неразрешенный.

Ответ №1:

В конце концов все свелось к ссылке на браузер VS. (http://blogs.msdn.com/b/webdev/archive/2013/06/28/browser-link-feature-in-visual-studio-preview-2013.aspx)

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

Отключение ссылки браузера решает проблему.

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

1. Очень верно, когда у вас страницы большего размера!

2. Этот ответ должен быть помечен как решение. Спас меня от ада.