分享免费的编程资源和教程

网站首页 > 技术教程 正文

福利来了!ESXi虚拟机性能问题排错思路

goqiw 2024-11-11 12:31:41 技术教程 16 ℃ 0 评论

相信各位虚拟化管理员在维护vSphere虚拟化平台时,经常会碰到以下性能问题:

  • 在虚拟机中做任何操作都响应缓慢。

  • 在虚拟机中运行的应用程序间歇性地出现卡顿。

  • 虚拟机在vCenter管理界面看上去无响应。

如果仅仅是一台或小范围部分虚拟机出现了上述性能,即没有出现同一台ESXi主机上的虚拟机或整个集群的虚拟机出现性能问题,那么这种情况的性能问题通常就是可能是由于以下多个不同方面导致的:CPU 限制、内存过量使用、存储延迟或网络延迟。在之前的文章中,小编也整理了不少有关性能方面的文章,比如《干货分享之VMware vSphere 存储性能指标及影响因素分析》、《干货分享之vSphere各项关键性能监控指标详讲和解决思路》,有兴趣的小伙伴也可以点击回顾一下。但本文的重点是针对虚拟机层面的性能问题提供一些排错思路。

下面的每个步骤提供了相关说明以及指向相应文档的链接,请按最本文提供的顺序执行这些步骤,以找出问题,然后找到正确的解决办法。这种排序方式也是为了最大限度减少数据丢失而确定的。

注意:

1、完成每个步骤后,确定是否仍然存在性能问题。请按顺序执行每个故障排除步骤,不要跳过任何步骤。

2、本文会提及大量的esxtop命令去监控指标,有关esxtop的使用,请参考下面这个图片的使用说明。

本文将从CPU 负载、内存负载、存储延迟和网络延迟等4个影响虚拟机性能的因素去做分析,给小伙伴们提供参考。

CPU负载

要确定性能低下是否是由于 CPU 限制导致的,请执行以下操作:

  1. 使用esxtop命令确定 ESXi/ESX Server 是否过载。

  • (1)检查命令输出第一行上的load average。

    平均负载为 1.00 表示 ESXi/ESX Server 计算机的物理 CPU 已充分利用,而平均负载为 0.5 则表示利用率为一半。平均负载为 2.00 表示整个系统过载。

    (2)检查%READY字段,以了解虚拟机就绪但无法计划为在物理 CPU 上运行的时间百分比。

    在正常操作条件下,此值应保持在 5% 以下。如果在性能较差的虚拟机上就绪时间值较高,则检查 CPU 限制:

    (3)确保虚拟机不受对其本身设置的 CPU 限制的约束 确保虚拟机不受其资源池的约束。有关详细信息,请VMware 官网KB: Impact of virtual machine memory and CPU resource limits (1033115)。

    (4)如果平均负载太高,且就绪时间不是由 CPU 限制导致的,请调整主机上的 CPU 负载。要调整主机上的 CPU 负载,请执行以下操作之一:

  • 增加主机上物理 CPU 的数目

  • 减少分配给主机的虚拟 CPU 的数目。要减少分配给主机的虚拟 CPU 的数目,请执行以下操作之一:a、减少分配给在 ESXi 主机上运行的所有虚拟机的 CPU 总数。有关详细信息,请VMware 官网KB: Determining if multiple virtual CPUs are causing performance issues (1005362);b、减少在主机上运行的虚拟机的数目。

内存负载

1、要确定性能低下是否是由于内存过量使用导致的,请执行以下操作:

(1)使用esxtop命令确定 ESXi/ESX Server 的内存是否被过量使用。检查命令输出第一行上的MEM overcommit avg。此值反映了请求的内存与可用内存之间的比率减 1。
示例:

    • 如果虚拟机需要 4 GB 的 RAM,而主机具有 4 GB 的 RAM,则其比率为 1:1。从 1/1 减 1 后,MEM overcommit avg字段显示为 0。不存在过量使用且不需要额外的 RAM。

    • 如果虚拟机需要 6 GB 的 RAM,而主机具有 4 GB 的 RAM,则其比率为 1.5:1。从 1/1.5 减 1 后,MEM overcommit avg字段显示为 0.5。RAM 被过量使用了 50%,这意味着与可用 RAM 相比还需要 50% 的 RAM。

(2)如果内存被过量使用,请调整主机上的内存负载。要调整内存负载,请执行以下操作之一:

  • 增加主机上的物理 RAM 量

  • 减少分配给虚拟机的 RAM 量。要减少分配的 RAM 量,请执行以下操作之一:减少分配给主机上所有虚拟机的 RAM 总量;减少主机上的虚拟机总数。

  1. 确定虚拟机是否在膨胀和/或交换。要检测任何膨胀或交换,请执行以下操作:
    运行esxtop。 键入m表示内存 键入f表示字段
    为内存膨胀统计信息 (MCTL) 选择字母J 查看MCTLSZ值。MCTLSZ (MB)显示气球驱动程序回收的客户机物理内存量。这个值大于1就说明内存存在过载的情况。
    键入f表示字段 为内存交换统计信息 (SWAP STATS) 选择字母。 查看SWCUR值。SWCUR (MB)显示当前的交换使用量。这个值大于1就说明内存存在过载的情况。

    要解决此问题,请确保膨胀和/或交换不是由不恰当的内存限制导致的。如果内存限制设置错误,请正确重置。有关详细信息,请参考一下VMware官网KB:Impact of virtual machine memory and CPU resource limits (1033115)和Balloon driver retains hold on memory causing virtual machine guest operating system performance issues (1003470)

存储延迟

要确定性能低下是否是由于存储延迟导致的,当然小伙伴们也可以参考小编之前的文章《干货分享之VMware vSphere 存储性能指标及影响因素分析》。

但我们这里更注重排错思路,所以还是请看执行或确认以下事项:

  1. 确定问题是否与本地存储有关。将虚拟机迁移至其他存储位置。

  2. 减少每 LUN 的虚拟机数。

  3. 在 Windows 客户机中查找类似于以下内容的日志条目:
    The device, \Device\ScsiPort0, did not respond within the timeout period.

  4. 使用 esxtop 查找高 DAVG 延迟的卷。有关详细信息,请参见 Using esxtop to identify storage performance issues (1008205)或上面关于esxtop命令使用的截图

  5. 使用iometer 或FIO等工具测试虚拟机IO和带宽性能。有关这两个工具的详细操作和帮助信息,请自行百度搜索或者参见 Testing virtual machine storage I/O performance for VMware ESXi and ESX (1006821)。

  6. 将虚拟机的 iometer 结果与附加到同一存储的物理机的相应结果进行比较。

  7. 检查 SCSI 预留是否存在冲突。有关详细信息,请参见 Analyzing SCSI Reservation conflicts on VMware Infrastructure 3.x and vSphere 4.x (1005009)。

  8. 如果您使用的是 iSCSI 存储,请确保ESXi上的iSCSI 所有配置正确。有关详细信息,请参考VMware官网产品手册《vSphere 存储》中关于iSCSI的配置内容。

  9. 如果使用FC SAN组网的存储,检查存储光交(博科光交使用porterrshow命令确认)是否存在丢包的情况。博科光交命令使用自行百度搜索。

如果您确定与存储相关的问题:

  1. 确保存储和服务器的 HBA 卡在 VMware 官网兼容性认证范围内。有关详细信息,请参考VMware Hardware Compatibility List。

  2. 确保您的物理服务器的 BIOS 是最新的。有关详细信息,请参考VMware 官网KB: Checking your firmware and BIOS levels to ensure compatibility with ESX/ESXi (1037257)。

  3. 确保您的 HBA 的固件和驱动是最新的。有关详细信息,请参考VMware 官网KB: Slow performance caused by out of date firmware on a RAID controller or HBA (1006696)。

  4. 确保 ESXi主机可识别您的 SATP 存储阵列类型和 PSP 路径选择的正确模式及路径策略。有关详细信息,请参考VMware 官网KB: Verifying correct storage settings on ESX 4.x, ESXi 4.x and ESXi 5.0 (1020100)。

网络延迟

网络性能可能会受到 CPU 性能的高度影响。在检查网络延迟之前排除 CPU 性能问题。

要确定性能问题是否是由网络延迟导致的,请执行以下操作:

  1. 使用 Iperf 或iperf 3工具测试来自虚拟机的最大带宽,这个工具随便在百度上都能下载。在使用 Iperf 时,将 TCP 窗口大小更改为 64 K。性能也取决于此值。要更改 TCP 窗口大小,请执行以下操作:

    在服务器端,输入以下命令:

    iperf -s

    在客户端,输入以下命令:

    iperf.exe -c sqlsed -P 1 -i 1 -p 5001 -w 64K -f m -t 10 900M

注:iperf好iperf 3工具有关详细使用操作帮助信息,请自行百度。

2、使用 ESXi主机以外的计算机运行 Iperf。根据您的物理环境,将其结果与预期结果进行比较。

3、在同一物理交换机的同一 VLAN 上,使用 ESXi主机以外的另一台计算机运行 Iperf。如果性能较好,且仅可使用另一地理位置的计算机重现问题,则此问题与您的网络环境有关。

4、在同一 ESXi主机的端口组/vswitch 上的两台虚拟机之间运行 Iperf。如果结果正常,则可以排除 CPU、内存或存储问题。

如果您确定在网络上存在瓶颈:

  1. 完成 Troubleshooting network performance issues (1004087) 中的所有步骤。

  2. 如果您使用的是 iSCSI 存储器和巨帧,请确保所有内容都配置正确。有关详细信息,请参考VMware 官网KB:iSCSI and Jumbo Frames configuration on ESX/ESXi (1007654) Enabling IOAT and Jumbo frames (1003712) Enabling Jumbo Frames for VMkernel ports in a virtual distributed switch (1038827)

  3. 如果您使用的是 Network I/O Control,请确保为您的流量正确配置了份额和限制。有关详细信息,请参考VMware 官网KB: Network I/O Resource Management in vSphere 4.1 with vDS (1022585)。

  4. 确保正确配置了流量调整。有关详细信息,请参见《ESXi/ESX 配置指南》中的 Traffic Shaping Policy。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表