w3wp.exe
показывает 99% загрузки процессора. Каковы наилучшие способы выяснить причину такой высокой загрузки ЦП?
5 ответов
Присоединяй WinDbg + sos и запускай !runaway
Это покажет вам, какой поток занимает больше всего процессорного времени. Сделать !clrstack
в потоке, чтобы узнать, что он делает.
Другое предложение инструментов - DebugDiag, см. Больше здесь
[ОБНОВЛЕНИЕ] Используйте ProcDump, подробнее см. В разделе Использование ProcDump.exe для мониторинга w3wp.exe на предмет скачков ЦП.
w3wp.exe
- это рабочий процесс ASP.NET, поэтому, если он использует высокий процент ЦП сервера, проблема возникает из-за приложения ASP.NET. Однако это не обязательно означает, что существует проблема с приложением ASP.NET. Возможно, он обслуживает слишком много запросов с ограниченными ресурсами. Единственная реальная мера - это проверить использование ЦП по сравнению с объемом трафика, обрабатываемого приложением.
Если вы подозреваете, что определенный запрос занимает слишком много времени, вы можете использовать утилиту командной строки Logparser, чтобы проанализировать ваши файлы журналов и найти, какая страница имеет длительное время выполнения.
c:\>logparser "select top 10 cs-uri-stem, time-taken from INSERT_YOUR_IIS_LOG_FILE_NAME.log group by cs-uri-stem order by time-taken desc" -q:on
Вы также можете использовать инструмент, чтобы показать, какие страницы выполняются в данный момент, например IISPeek (не бесплатно).
Если вы хотите пойти глубже, попробуйте понять, как использовать WinDbg. Вот хороший учебник: отладчики Windows: часть 1: учебник WinDbg
У меня была эта проблема с перерывами раньше. Кажется, после первого запроса он достигает 99% и никогда не падает. Если я убиваю процесс, новый рабочий процесс обычно ведет себя правильно. Я так и не понял, почему это происходит.
У нас та же проблема, что и Грег отмечает выше. Мы просто убиваем эти процессы. Не наблюдал этого на IIS6/ Windows Server 2003, только на IIS7/ Windows Server 2008.