Как узнать, нужно ли мне также выполнять профилирование памяти?

В настоящее время я выполняю выборку ЦП приложения ASP.NET Core, где я отправляю ему огромное количество запросов (> 500 КБ). Я вижу, что пиковый рабочий набор приложения составляет около ~ 300 МБ, что, на мой взгляд, не так уж много, учитывая количество запросов к приложению. Но то, что я наблюдаю, — это огромное падение количества запросов в секунду, когда я включаю определенные функции в своем приложении.

Вопрос. Должен ли я также выполнять профилирование памяти? Я спрашиваю об этом, потому что, несмотря на то, что пиковый рабочий набор составляет ~ 300 МБ, может быть большое количество короткоживущих объектов, которые могут быть созданы и собраны сборщиком мусора, и, поскольку работа сборщика мусора также считается за ЦП, должен ли я также выполнять профилирование памяти, чтобы увидеть, Я выделяю слишком много?


person aspnetuser    schedule 02.06.2018    source источник
comment
Вы видите, что ЦП тратит время на сборщик мусора? Если это так, то да, вам нужно сделать профилирование памяти. Я бы предложил выполнить профилирование временной шкалы, чтобы увидеть, что делают потоки, а затем принять решение.   -  person Igor Labutin    schedule 04.06.2018


Ответы (1)


Я отвечу на этот вопрос сам на основе новой информации, которую я узнал.

Это основано на инструменте PerfView, который предоставляет информацию о GC и распределениях. введите здесь описание изображения

Когда вы откроете представление GCStats, перейдите по ссылкам к интересующему вас процессу, и вы должны увидеть информацию, как показано ниже: введите здесь описание изображения

Обратите внимание, что представление имеет информацию, имеющую % CPU Time spent Garbage Collecting. Если вы видите, что это > 5%, это должно быть причиной для беспокойства, и вам следует начать профилирование памяти.

person aspnetuser    schedule 11.06.2018