У меня есть сервер терминалов Server 2008 R2, который просто бездельничал последние три месяца с очень, очень низким уровнем использования (возможно, один пользователь в час, один раз в день).
Внезапно, без какой-либо причины, которую я могу понять, mscorsvw.exe (.NET Runtime Optimisation Service)
начал потреблять 100% одного процессора, вызывая срабатывание всевозможных сигналов тревоги и триггеров. Это повторяющийся паттерн, поэтому вполне предсказуемо сказать, когда это произойдет в следующий раз:
Кто-нибудь знает, что может вызвать это? Я сделал очевидное (перезапустил сервер), но кроме этого я СОЛНЕЧЕН.
Единственное, что, на мой взгляд, может иметь значение, - это то, что я утвердил полдюжины обновлений Windows сегодня утром через WSUS, но они не должны быть установлены до 2 часов ночи завтра (некоторые из них были связаны с безопасностью .NET 4).
Никто не вошел на сервер (кроме меня), и даже если бы они были, у нас нет приложений .NET, которые там используются.
mscorsvw - это процесс, который предварительно компилирует двоичные файлы .NET. Ваши обновления могли вызвать эту активность. По крайней мере, вот что http://blogs.msdn.com/b/davidnotario/archive/2005/04/27/412838.aspx говорит, что происходит.
Вы можете лучше понять, что именно происходит, если сможете запустить утилиту sysinternals procmon. Это расскажет вам, какие файлы mscorsvw использует или на которых фокусируется, и поможет определить, действительно ли он фокусируется на потенциальных файлах .NET.
С этого веб-сайта, если это происходит, запускается
ngen.exe executequeueditems
должен «очистить очередь», запустив все сразу, вместо того, чтобы ждать, пока ЦП перейдет в режим ожидания, как кажется, когда это происходит на вашем сервере. Как только это будет сделано с предварительной компиляцией, это должно прекратиться.