Это нормально для дампа памяти ASP.NET, чтобы содержать строки полной HTML-страницы?
У нас есть ситуация, когда рабочий процесс ASP.NET использует 100% процессорного времени. Проанализировав результаты perfmon и дамп памяти, мы увидели признак того, что сборщик мусора сильно использует процессорное время.
Используя WinDbg, мы увидели, что LOH полон строк, содержащих полную страницу HTML-страниц. A ! Gcroot к строке часто не находит корня. Вопрос в том, нормально ли это для приложения ASP.NET или это более специфично для нашего веб-сайта?
Может быть важно отметить, что этот сайт ASP.NET является сайтом на основе Sitecore. Мы понимали, что Sitecore кэширует вывод HTML, но, насколько я понимаю, Sitecore кэширует не всю страницу, а только на уровне рендеринга.
1 ответ
Обычно полная html-страница находится в памяти, потому что, особенно, когда буфер страницы включен (и это по умолчанию), asp.net создает страницу в памяти, а после полной визуализации страницы отправляет ее. в браузер.
Теперь в некоторых случаях я вижу программистов, которые используют функцию рендеринга страницы, чтобы получить этот HTML, а затем искать и заменять некоторые строки. Таким образом, в этом случае также полная html-страница может быть найдена в памяти.
Теперь, если вы видите, что ваш процессор на 100%, проверьте, не последовал ли сбой. Если нет, то у вас, вероятно, есть какие-то тяжелые вычисления, или много запросов linq, или что-то подобное.