我在 Hyper-V 上运行虚拟机服务器,该服务器大约每周停顿一次,实际上导致它正在运行的某些服务变得无用。
-物理主机
- CPU:6核Xeon E5-2620 2.10GHz
- 内存:16GB
- 操作系统:Windows Server 2008 R2
- 服务
- 文件服务
- Hyper-V
虚拟机
- 处理器
- 逻辑处理器:4
- 虚拟机限制:100
- 相对权重:100
- 内存(动态)
- 内存缓冲区:20%
- 内存权重:高
- 网络适配器:此虚拟网络上唯一分配有自己端口的虚拟机
- 操作系统:Windows Server 2008 R2
- 服务
- 文件服务
- 打印和文件服务
- Web 服务器 (IIS)
- Windows 服务器更新服务
以下是症状:
-当服务器停滞时我可以...
- 对服务器进行 Ping
- 使用 PowerShell 命令(例如 Get-Service)查询服务器
-当服务器停滞时我不能...
- 远程或通过 Hyper-V 登录到服务器。我可以将 Ctrl-Alt-Del 命令发送到 VM,但它在进入登录屏幕之前就挂起了。
- 连接到服务器上托管的网络共享
- 打印任何内容。后台打印程序备份,所有打印停止。
我设置了性能警报和数据收集器来跟踪每个进程的处理器时间百分比和总处理器时间百分比。在停滞期间,总处理器时间百分比平均约为 5%。我还检查了主机上的内存,发现至少有几 GB 可用。
同一主机上还有其他 VM 服务器同时运行。在停顿期间,所有其他 VM 似乎均未受到影响。
VM 服务器最终会在 10-30 分钟的停顿期后开始正常运行。我在事件日志中找不到任何相关错误或警告。有人知道服务器为什么会这样停顿吗?我还可以检查其他什么来缩小问题范围吗?
答案1
您可以设置性能监视器来记录每个进程使用的内存。在可用计数器下,向下滚动到进程对象,展开它。添加专用字节、工作集和专用工作集。确保选择,这样它会显示每个进程的细分,而不是总数。这将显示每个进程分配的内存,并希望指出罪魁祸首。
通常,当内存不足时,机器不会停滞得那么厉害。但至少这是你现在可以开始的地方。
答案2
我们过去遇到过虚拟机占用过多内存导致主机锁定的问题。有一种方法可以为 Hyper-V 保留一些内存,这可能会对您有所帮助。这为我们解决了一些问题。
解释了要使用的注册表路径这里。它是一个 DWORD,应以 MB 为单位指定,例如 2048。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\MemoryReserve
配置后重新启动。
另外,您没有描述您的存储环境。如果您的虚拟机和主机共享磁盘,这可能会给您带来问题。