Картинка все объясняет. У нас была проблема с веб-сайтом IIS MVC 5, размещенным в Microsoft Azure, в течение последних нескольких месяцев. Похоже, что сайт постоянно использует ЦП в течение нескольких дней, пока не достигнет 100% ЦП. Я использовал Perfmon / DebugDiag, чтобы зафиксировать, что происходит, когда сервер достигает 100% без положительных результатов. Я также отслеживал рабочие процессы IIS, чтобы узнать, не зависает ли какой-либо конкретный запрос, но все запросы обрабатываются быстро (до 100%). Хватаемся за соломинку - у нас были коллегиальные проверки кода, чтобы убедиться, что не происходит плохих циклов / конкатенаций строк.
Я предполагаю, что это как-то связано со сборщиком мусора ... Сброс пула приложений устраняет проблему (на несколько дней).
Приветствуется любое понимание того, как отладить это дальше. Я безуспешно следил за этой статьей Microsoft: http://www.iis.net/learn/troubleshoot/performance-issues/troubleshooting-high-cpu-in-an-iis-7x-application-pool
Спасибо.
Сборка мусора обычно связана с памятью, а не с процессором. Конечно, у вас могут быть объекты, в которых есть процедуры, которые зацикливаются, и эти объекты медленно растут или время между итерациями цикла уменьшается. Да, вам нужно профилировать свои процессы, так как это скажет вам, какие методы вызывают все время ЦП. Я рекомендую инструмент Telerik JustTrace, хотя существует множество других.
Еще одна мысль: вы можете подумать, что удалили свой объект, но цикл все еще продолжается. Рассмотрите возможность корректного завершения циклов с помощью токена отмены или условия.