Загрузка ЦП w3wp застряла на 50%, информация стека вызовов в Диагностике отладки бесполезна
Я увидел, что загрузка процессора была слишком высокой для процесса w3wp пула приложений. Погуглил и нашел статьи, связанные с дампами и анализом, используя инструмент Debug Diagnostic.
Но анализ показывает только этот стек вызовов в "Топ 1 потока с высокой загрузкой ЦП":
System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion (IntPtr, System.Web.RequestNotificationStatus ByRef) System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion (IntPtr, System.Wef.Reb
Как только я перезагружаю пул приложений, загрузка ЦП нормализуется. После нескольких часов тестирования разных вещей на сайте, я заметил, что загрузка процессора вернулась к 50%. Я не уверен, какой сценарий вызывает такое поведение.
Приложение представляет собой веб-сайт.NET 4 Razor, работающий под управлением Windows Server 2008 R2, IIS 7. Что лучше всего сделать, чтобы выявить проблемы здесь. Несколько указателей будут оценены.
1 ответ
Я получил некоторую значимую информацию, используя Process Explorer.
Перешел к свойствам w3wp, когда он застрял на 50%, посмотрел на вкладку "Потоки", нашел поток, потребляющий около 45% ЦП, и увидел информацию о его стеке. И вот он, алгоритм шифрования строк в моем коде!:)
Проверьте это, используя пробную версию dotTrace, которая предоставила ту же информацию, хотя и в более удобном для чтения виде.
Я внесу изменения в алгоритм шифрования и отслеживаю пики ЦП еще 2 дня, чтобы быть уверенным.