我们有一台 Windows 10 VM,它有一个 vCPU 和 8GB RAM。它运行一个 HVAC 设计软件,各种用户都可以通过 RDP 访问并使用。我们注意到,有时 CPU 会(似乎是随机地)达到 100% 的最大值。发生这种情况时,无法通过 RDP 登录。RDP 连接超时。从 VMware Web 控制台登录的尝试速度非常慢。一旦最终通过登录屏幕,就会出现黑屏,并显示错误“sihost.exe - 系统错误系统检测到此应用程序中基于堆栈的缓冲区溢出。此溢出可能会允许恶意用户控制此应用程序”。单击“确定”会关闭错误消息,但 VM 会无限期地挂在黑屏上。没有可用的鼠标光标,并且 VM 似乎没有响应键盘输入。
我运行了 Trend Micro 病毒扫描,还运行了 sfc/scannow 命令,均未发现任何问题。当虚拟机处于此状态时,唯一的“修复”方法是从 vCenter 重新启动它。有人还有其他想法或建议吗?
编辑:我能够确定是“服务主机:远程桌面服务”将 CPU 固定在 100%。我不知道为什么会发生这种情况,因为通过 RDP 连接或断开与虚拟机的连接时不会发生这种情况。它似乎是无缘无故发生的。
答案1
Windows 上的 CPU 使用率峰值通常来自更新。通常在更新/重启后,使用 .NET Framework 的应用程序运行速度会稍慢一些,并且 CPU 使用率会稍高一些,而新程序集会链接到新的框架版本。这通常会显示mscorsvw.exe
在进程列表中。根据此服务器的单核配置,我建议至少再添加一个以减少这些更新的影响。
您还可以加快该过程并手动调用.net 选项:
c:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems
schTasks /run /Tn "MicrosoftWindows.NET Framework.NET Framework NGEN v4.0.30319"
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems
schTasks /run /Tn "MicrosoftWindows.NET Framework.NET Framework NGEN v4.0.30319 64"
最后一条建议是使用 Windows Server 2016/2019 而不是 Windows 10,因为更新是非可选的,并且在桌面版本上自动运行。
答案2
如果其他任何事情都没有引起注意,请检查您的 Sysmain 进程。尝试禁用它并检查性能改进。