我们是一家小商店,使用一台 Dell T420(双 CPU,只有一个,6 核)和 32GB RAM 作为主服务器。我们只有 5 个虚拟机,其中一个是我们的 WSE 2012 DC。
时不时地,我们所有的虚拟机都会同时达到 100% 的 CPU 使用率,而且我们无法确定其发生的频率。主机则保持在 4-5% 的水平。主机热启动并不能缓解问题,但冷启动至少可以让一切恢复正常,直到问题再次出现。
有时我们可以让它平静一周或更长时间;有时只能平静一天。一个不可靠的模式似乎是它在长时间的空闲期间(即夜间)的某个时间启动。检查服务器的温度日志首先让我们怀疑是过热,但对最近事件的进一步调查推翻了这一结论。
我们还在戴尔论坛上找到了类似问题的描述,声称通过安装最新一轮的戴尔更新可以解决问题。我们最近参与了一个项目,就是为了做到这一点(顺便说一句,将大约 700GB 的 VHD 安全地从那台机器上取下来然后再放回去是一次相当冒险的事情),但令我们非常沮丧的是,它并没有起到什么作用。
我们完全糊涂了。Microsoft 支持也是如此(或者至少第一层支持是如此,尽管他们试图不这样做)。我在下面附上了我们的 SystemInfo 输出。
有人知道从哪里开始寻找吗?
谢谢
===================================
主机名:SERVER1 操作系统名称:Microsoft Hyper-V Server 2012 R2 操作系统版本:6.3.9600 N/A 内部版本 9600 操作系统制造商:Microsoft Corporation 操作系统配置:独立服务器 操作系统构建类型:多处理器免费 注册所有者:Windows 用户 注册组织: 产品编号:06401-029-0000043-76293 最初安装日期:2014 年 4 月 3 日,下午 4:07:15 系统启动时间:2014 年 5 月 4 日,下午 1:56:47 系统制造商:戴尔公司 系统型号:PowerEdge T420 系统类型:基于 x64 的 PC 处理器:已安装 1 个处理器。 [01]:Intel64 系列 6 型号 45 步进 7 GenuineIntel ~2200 Mhz [Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20 GHz](手动添加) BIOS 版本:Dell Inc. 2.1.2,2014 年 1 月 20 日 Windows 目录:C:\Windows 系统目录:C:\Windows\system32 启动设备:\Device\HarddiskVolume1 系统区域设置: en-us;英语(美国) 输入法区域设置: en-us;英语(美国) 时区: (UTC-09:00) 阿拉斯加 总物理内存:32,723 MB 可用物理内存:12,716 MB 虚拟内存:最大大小:37,587 MB 虚拟内存:可用:17,129 MB 虚拟内存:使用中:20,458 MB 页面文件位置:C:\pagefile.sys 领域:OIT 登录服务器:\\SERVER1 修补程序:已安装 31 个修补程序。 [01]:KB2843630 [02]:KB2862152 [03]:KB2868626 [04]:KB2876331 [05]:KB2883200 [06]:KB2884846 [07]:KB2887595 [08]:KB2892074 [09]:KB2893294 [10]:KB2894179 [11]:KB2898514 [12]:KB2898871 [13]:KB2901101 [14]:KB2901128 [15]:KB2903939 [16]:KB2904266 [17]:KB2908174 [18]:KB2909210 [19]:KB2911106 [20]:KB2913760 [21]:KB2916036 [22]:KB2917929 [23]:KB2919394 [24]:KB2919442 [25]:KB2922229 [26]:KB2923300 [27]:KB2923768 [28]:KB2928193 [29]:KB2928680 [30]:KB2930275 [31]:KB2939087 网卡:已安装 3 个 NIC。 [01]:Broadcom NetXtreme 千兆以太网 连接名称:NIC1 DHCP 已启用:否 IP 地址 [02]:Broadcom NetXtreme 千兆以太网 连接名称:NIC2 DHCP 已启用:是 DHCP 服务器:192.168.1.12 IP 地址 [01]:192.168.1.135 [02]:fe80::915b:8de0:712e:29f1 [03]:Hyper-V 虚拟以太网适配器 连接名称:vEthernet(外部 NIC 1_Internal) DHCP 已启用:否 IP 地址 [01]:192.168.1.11 [02]:fe80::2d35:f582:4958:9eb2 Hyper-V 要求:已检测到虚拟机管理程序。不会显示 Hyper-V 所需的功能。
== 编辑 ========================
我找到了解决这个问题的方法;我等了一年多以确保我们不会再遇到这个问题。
主持人:我想请求重新提出该问题,以便我可以发布答案。
答案1
经过一年多的等待,为了证明该解决方案的有效性,我终于能够发布这个答案。
Dell 的默认 BIOS 设置已启用 C-States,这会使计算机在空闲时处于低功耗模式。这会导致虚拟机管理程序主机(包括 VMWare、Citrix)上的虚拟机 CPU 使用率达到 100%。
解决方案是将 BIOS 中的系统配置文件设置设为性能,而不是每瓦性能 [OS] 或每瓦性能 [DAPC](后者为默认值)。
相关戴尔文档,第 3 页:
http://en.community.dell.com/techcenter/extras/m/white_papers/20161975/download
以下是熟悉此问题的少数戴尔支持工程师之一的回复:
简而言之:C 状态会在空闲时间禁用额外的处理器核心。对于绑定到核心的虚拟机(这是操作系统控制的,我认为它是不可配置的),这可能会导致它们锁定,因为它们试图使用它们眼中不再存在的资源执行操作。
一般来说,C 状态通常用于备份服务器、辅助角色服务器(备份 DNS、DHCP、域控制器等)等项目,这样备份服务器可以保持开启,但处于低功耗模式以节省能源。
您可以在此处找到其他文档:
http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface
简而言之,对于虚拟机管理程序主机,应始终关闭戴尔服务器上的电源空闲状态(设置为性能)。
感谢 Kitsap Bank 的 Eddy Simons 帮助我找到这个解决方案。
答案2
目前还不清楚问题是什么;您已经知道了。我们无法告诉您原因是什么。
但是,您可以运行一些测试:
构建虚拟机 1
- 在此虚拟机上持续运行 CPU 密集型任务
(每秒执行数百万次复杂的数学计算)
- 在此虚拟机上持续运行 CPU 密集型任务
构建 VM 2
- 在此虚拟机上持续运行 RAM 密集型任务
(在内存中创建一个巨型数组,删除它,重复)
- 在此虚拟机上持续运行 RAM 密集型任务
构建 VM 3
- 在此虚拟机上持续运行磁盘密集型任务
(从文件中读取/写入/删除数百万行)
- 在此虚拟机上持续运行磁盘密集型任务
构建 VM 4
- 在此虚拟机上持续运行网络密集型任务
(将文件复制到 SMB 共享/从 SMB 共享复制文件)
- 在此虚拟机上持续运行网络密集型任务
等到问题再次发生,观察每台服务器的性能数据。
哪台服务器受影响最大?
有没有哪台服务器完全没有受到影响?
我的猜测是,你的磁盘很差,CPU 正在等待 IO 操作完成后才能继续,这可能会导致某些应用程序的 CPU 耗尽。
答案3
很高兴我发现了这一点。我有一台运行 Hyper-v 的 2012R2 服务器。AMD,6 核 CPU。它已经完美运行了一年多。突然间,我开始看到无法连接的虚拟机 - 无法通过 RDP 连接,也无法通过 Hyper-V 连接。唯一的选择是关闭虚拟机。关闭没有得到响应。所以... 从墙上拔下虚拟插头。打开。
症状是单个机器似乎使用了 100% 的分配 CPU(例如:六核主机上的单核 VM 的使用率为 16%)。
这个问题是偶尔发生的。没有明显的规律或原因。
我终于意识到,这与我尝试将主板从 32GB 升级到 64GB 失败是一致的。问题是,我可以让 1、2 或 3 根 16GB 内存条用于 16、32 或 48GB,但不能让 4 根内存条用于 64GB。我得花很多时间处理 BIOS 设置等。在这方面我一点也不开心。就在那时,我发现了 VM 上启用动态内存的绝妙功能。原来,没有 64GB 我也能活下去!!
我猜测我在修补时打开了 CPU 的电源管理,然后就出现了这个问题。
我已经在 bios 中关闭了 APM。我需要几天时间才能 60% 确信这解决了问题。需要几周时间才能宣布胜利。但这感觉像是问题的一个很好的理由。
现在已经过去24小时了,一切顺利。
祈祷吧。
感谢您的信息!!