多台服务器的 ESXi 环境随机冻结

多台服务器的 ESXi 环境随机冻结

在过去的几周中,我们在基于 ESXi 的 VDI 环境中遇到了一些问题,Windows 7 桌面图像全天都会随机冻结。

这可能发生在我们任何一个 ESXi 主机上的任何 VDI Win7 映像上,据我们所知,最近没有对系统或软件进行任何更改(嗯......)。

如果我查看冻结系统的控制台,它并不总是完全冻结。有时我可以向它发送 ctrl+alt+del 信号,它会执行一些操作,但并非总是如此。此外,ESXi 中虚拟机的 CPU 使用率实际上相当低(使用率 <5%),因此它似乎不是一个失控进程拖累了它。

为了诊断问题,我在冻结时拍摄了几个虚拟机的快照,并将其 vmss 转换为 dmp 文件。然后我将它们加载到 windbg 中,并获得了以下信息:

0: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

NMI_HARDWARE_FAILURE (80)
This is typically due to a hardware malfunction.  The hardware supplier should
be called.
Arguments:
Arg1: 00000000004f4454
Arg2: 0000000000000000
Arg3: 0000000000000000
Arg4: 0000000000000000

Debugging Details:
------------------


DEFAULT_BUCKET_ID:  VISTA_DRIVER_FAULT

BUGCHECK_STR:  0x80

PROCESS_NAME:  System

CURRENT_IRQL:  0

LAST_CONTROL_TRANSFER:  from fffff80001886113 to fffff80001e0d0ba

STACK_TEXT:  
fffff800`0169aad0 fffff800`01886113 : 00000000`00000000 fffff800`01e293c0 00000000`00000000 00000000`00000000 : hal!HalpRtcClockInterrupt+0x2a
fffff800`0169ab00 fffff880`033cd9c2 : fffff800`01892709 00000000`00369e99 fffffa80`0249d638 00000000`00000000 : nt!KiInterruptDispatchNoLock+0x163
fffff800`0169ac98 fffff800`01892709 : 00000000`00369e99 fffffa80`0249d638 00000000`00000000 00000000`00000000 : intelppm!C1Halt+0x2
fffff800`0169aca0 fffff800`0188189c : fffff800`01a04e80 fffff800`00000000 00000000`00000000 fffff880`0105e800 : nt!PoIdle+0x52a
fffff800`0169ad80 00000000`00000000 : fffff800`0169b000 fffff800`01695000 fffff800`0169ad40 00000000`00000000 : nt!KiIdleLoop+0x2c


STACK_COMMAND:  kb

FOLLOWUP_IP: 
nt!KiInterruptDispatchNoLock+163
fffff800`01886113 f685f3000000ff  test    byte ptr [rbp+0F3h],0FFh

SYMBOL_STACK_INDEX:  1

SYMBOL_NAME:  nt!KiInterruptDispatchNoLock+163

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: nt

IMAGE_NAME:  ntkrnlmp.exe

DEBUG_FLR_IMAGE_TIMESTAMP:  521ea035

FAILURE_BUCKET_ID:  X64_0x80_nt!KiInterruptDispatchNoLock+163

BUCKET_ID:  X64_0x80_nt!KiInterruptDispatchNoLock+163

Followup: MachineOwner
---------

和这个...

1: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

NMI_HARDWARE_FAILURE (80)
This is typically due to a hardware malfunction.  The hardware supplier should
be called.
Arguments:
Arg1: 00000000004f4454
Arg2: 0000000000000000
Arg3: 0000000000000000
Arg4: 0000000000000000

Debugging Details:
------------------


DEFAULT_BUCKET_ID:  VISTA_DRIVER_FAULT

BUGCHECK_STR:  0x80

PROCESS_NAME:  System

CURRENT_IRQL:  0

LAST_CONTROL_TRANSFER:  from fffff80001892709 to fffff880033cd9c2

STACK_TEXT:  
fffff880`009fbc98 fffff800`01892709 : 00000000`00369e99 fffffa80`0249b598 fffff880`009f2f40 00000000`00000001 : intelppm!C1Halt+0x2
fffff880`009fbca0 fffff800`0188189c : fffff880`009e8180 fffff880`00000000 00000000`00000000 fffff800`01941430 : nt!PoIdle+0x52a
fffff880`009fbd80 00000000`00000000 : fffff880`009fc000 fffff880`009f6000 fffff880`009fbd40 00000000`00000000 : nt!KiIdleLoop+0x2c


STACK_COMMAND:  kb

FOLLOWUP_IP: 
intelppm!C1Halt+2
fffff880`033cd9c2 c3              ret

SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  intelppm!C1Halt+2

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: intelppm

IMAGE_NAME:  intelppm.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  4a5bc0fd

FAILURE_BUCKET_ID:  X64_0x80_intelppm!C1Halt+2

BUCKET_ID:  X64_0x80_intelppm!C1Halt+2

Followup: MachineOwner
---------

虽然这表明存在硬件问题(据我所知),但我很难相信,因为我们有几个不同的农场,它们拥有不同的硬件,而且所有农场都出现了这种情况。

我可以做些什么来进一步排除故障?我对 windbg 的经验非常基础。

答案1

我正在研究 2008 服务器随机冻结的问题,从 vmss 文件中获取了一个 dmp 文件,并看到了完全相同的输出。我深入研究了 dmp 文件,并将最终内存位置追踪到某种系统级 api,这表明已收到有关处理器的中断但尚未完成。

我自信地向老板表示,这意味着硬件错误,尽管涉及两个数据中心的几台主机。毕竟,由于涉及从硬件本身抽象出来的虚拟机管理程序,因此可能会在某个地方触发中断,而中断并非来自硬件本身。

然后我突然有了一个可怕的想法,在工作站中启动了一个正在运行的虚拟机,将其暂停,获取一个 dmp 文件并在 windbg 中运行它。猜猜是什么 - 输出完全相同。

我相信显示的 nmi 是挂起过程本身的结果。您可以从 windbg 中获取其他有用的东西 - 内存分配等 - 但请不要浪费时间尝试追踪 nmi 问题。

相关内容