我有一台 Server 2008 R2 终端服务器,过去三个月一直闲置着,使用率非常非常低(大概每天一次,一个用户使用一小时)。
突然之间,不知为何,mscorsvw.exe (.NET Runtime Optimisation Service)
一个处理器开始 100% 地消耗,导致各种警报和触发器响起。这是一个重复的模式,因此很容易预测下一次什么时候会发生:
有人知道这是什么原因造成的吗?我已经做了显而易见的事情(重新启动服务器),但除此之外,我无能为力。
我能想到的唯一可能相关的事情是,我今天早上通过 WSUS 批准了六个 Windows 更新,但它们要到明天凌晨 2 点才能安装(其中一些与 .NET 4 安全有关)。
没有人登录到服务器(除了我),即使他们登录了,我们也没有任何在那里使用的.NET 应用程序。
答案1
mscorsvw 是一个预编译 .NET 二进制文件的进程。您的更新可能触发了此活动。至少,这是http://blogs.msdn.com/b/davidnotario/archive/2005/04/27/412838.aspx说正在发生。
如果您可以运行 sysinternals procmon 实用程序,您可能会对到底发生了什么有更多了解。它将告诉您 mscorsvw 正在访问或关注哪些文件,并帮助确定它是否真正关注潜在的 .NET 文件。
从那个网站,如果这是正在发生的事情,运行
ngen.exe 执行队列编辑
应该“清除队列”,让其一次性运行所有内容,而不是等待 CPU 空闲,就像在您的服务器上发生这种情况时一样。完成预编译后,这种情况应该停止发生。