Windows Server 2019 Docker Host 在高负载下挂起

Windows Server 2019 Docker Host 在高负载下挂起

我目前面临 Windows Server 2019 Standard Server 在系统负载过重的情况下挂起的问题。有问题的服务器是用于编译和测试 .NET 应用程序的 Windows docker 容器的主机。

服务器本身是一个 2 插槽系统,配备两个 AMD EPYC 7451 处理器和 128 GB 内存。使用的 Windows 版本是 Windows Server 2019 Version 1809(Build 17763.1158)。

当系统处于重负载状态时,就会出现问题,这意味着两个 CPU 的负载都达到 90% 左右,内存使用量达到 90GB,同时还要创建和销毁 docker 容器。当问题发生时,整个系统突然停止,但是当我连接到服务器的物理 VGA 端口时,我注意到桌面仍在工作。此时我打开了进程资源管理器。进程列表和所有图表都停止了,但 UI 仍在工作。我可以移动窗口,切换进程监视器的系统信息中的选项卡仍然有效。但是,所有导致新窗口立即打开的功能也导致进程监视器 UI 冻结。系统冻结后,CTRL+ALT+DEL 不再起作用,我还启用了 CTRL+ALT+SCRLK 来触发 BSoD,但没有成功。但是鼠标光标仍在工作,切换键盘上的数字锁定也有效。系统冻结后,事件日志不显示任何条目,之前也没有错误。事件日志中的最后一条通常是来自 Hyper-V VMSwitch 的消息,用于创建或删除 Hyper-V 网络。我猜问题可能与系统句柄有关,因为启动应用程序和创建窗口似乎不再起作用,但在系统冻结时,系统上只有大约 250k 个句柄处于活动状态。

为了解决这个问题,我已经更新了硬件的所有驱动程序,更新了所有允许更新的硬件组件的固件,并将 BIOS 更新为最新版本,但情况并没有改变。我还对 CPU 进行了压力测试,对 RAM 进行了内存测试。这两项测试都没有发现任何问题。

我现在不知道还能做什么,甚至不知道该寻找什么。这里有谁遇到过类似的问题,或者有什么建议我可以尝试其他什么来解决这个问题?

答案1

我在 Windows Server 2019 上使用 Hyper-V 和虚拟机时遇到了类似的问题。我尝试解决这个问题几个月,但没有成功,我不得不回到 Xeon。看起来 Epyc 与 Hyper-V 虚拟化兼容,但效果肯定不好。

答案2

我们能够解决这个问题。切换到 Hyper-V 虚拟化时,我们注意到只有一半的 CPU 被使用。原因是该系统上只有一半的内存插槽被使用。在用更多内存填充插槽后,所有问题都立即消失。Hyper-V 和进程虚拟化均按预期工作。

似乎 AMD 及其处理器中的大量 NUMA 节点存在一些问题。

相关内容