现象:
- 在客户机虚拟机中运行的服务响应缓慢。
- 在客户机虚拟机中运行的应用程序间歇性地做出响应。
- 客户机虚拟机可能看起来缓慢或无响应。
原因:
性能问题可能是由于以下多个不同方面导致的:CPU 限制、内存过量使用、存储延迟或网络延迟。如果您的一个或多个虚拟机具有错误的响应时间,请考虑其中每个区域以找到瓶颈。
解决方案:
注意:完成每个步骤后,确定是否仍然存在性能问题。请按顺序执行每个故障排除步骤,不要跳过任何步骤。
包括四个主要部分:
- CPU 限制
- 内存过量使用
- 存储延迟
- 网络延迟
一, CPU 限制
1, 使用esxtop命令确定 ESXi/ESX Server 是否过载。检查命令输出第一行上的load average。
平均负载为 1.00 表示 ESXi/ESX Server 计算机的物理 CPU 已充分利用,而平均负载为 0.5 则表示利用率为一半。平均负载为 2.00 表示整个系统过载。
2, 检查%READY字段,以了解虚拟机就绪但无法计划为在物理 CPU 上运行的时间百分比。
在正常操作条件下,此值应保持在 5% 以下。如果在性能较差的虚拟机上就绪时间值较高,则检查 CPU 限制:
确保虚拟机不受对其本身设置的 CPU 限制的约束
确保虚拟机不受其资源池的约束。
参考:虚拟机内存和 CPU 资源限制的影响 (1033115)
https://kb.vmware.com/s/article/1033115?lang=zh_CN
如果平均负载太高,且就绪时间不是由 CPU 限制导致的,请调整主机上的 CPU 负载。要调整主机上的 CPU 负载,请执行以下操作之一:
增加主机上物理 CPU 的数目
或
减少分配给主机的虚拟 CPU 的数目
(键入 esxtop,然后按 Enter。在 CPU 屏幕中,检查 %CSTP 值。如果该数字大于 3.00,则说明性能问题可能是 vCPU 数量导致的。尝试将虚拟机的 vCPU 数量减 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。
如果内存被过量使用,请调整主机上的内存负载。要调整内存负载,请执行以下操作之一:
增加主机上的物理 RAM 量
或
减少分配给主机上所有虚拟机的 RAM 总量
或
减少主机上的虚拟机总数。
2, 确定虚拟机是否在膨胀和/或交换。
要检测任何膨胀或交换,请执行以下操作:
a) 运行esxtop。
b) 键入m表示内存
c) 键入f表示字段
d) 为内存膨胀统计信息 (MCTL) 选择字母J
e) 查看MCTLSZ值。MCTLSZ (MB)显示气球驱动程序回收的客户机物理内存量。
f) 键入f表示字段
g) 为内存交换统计信息 (SWAP STATS) 选择字母。
h) 查看SWCUR值。SWCUR (MB)显示当前的交换使用量。
三, 存储延迟
要确定性能低下是否是由于存储延迟导致的,请执行以下操作:
- 确定问题是否与本地存储有关。将虚拟机迁移至其他存储位置。
- 减少每 LUN 的虚拟机数。
- 在 Windows 客户机中查找类似于以下内容的日志条目:
The device, \Device\ScsiPort0, did not respond within the timeout period. -
使用 esxtop 查找高 DAVG 延迟时间。
使用 esxtop 查找高 DAVG 延迟时间。有关详细信息,请参见 Using esxtop to identify storage performance issues (1008205)。 - 确定可使用 iometer 命令获取的最大 I/O 吞吐量。有关详细信息,请参见 Testing virtual machine storage I/O performance for VMware ESXi and ESX (1006821)。
- 将虚拟机的 iometer 结果与附加到同一存储的物理机的相应结果进行比较。
- 检查 SCSI 预留冲突。有关详细信息,请参见 Analyzing SCSI Reservation conflicts on VMware Infrastructure 3.x and vSphere 4.x (1005009)。
- 如果您使用的是 iSCSI 存储器和巨帧,请确保所有内容都配置正确。有关详细信息,请参见:
a) iSCSI and Jumbo Frames configuration on ESX/ESXi(1007654)
b) Enabling IOAT and Jumbo frames (1003712)
c) Enabling Jumbo Frames for VMkernel ports in a virtual distributed switch (1038827) - 如果您将 iSCSI 存储器和多路径与 iSCSI 软件启动器结合使用,请确保所有内容都配置正确。有关详细信息,请参见《iSCSI SAN 配置指南》中的以下各节:
Networking Configuration for Software iSCSI and Dependent Hardware iSCSI
Bind iSCSI Ports to iSCSI Adapters
如果您确定与存储相关的问题:
确保您的硬件阵列和 HBA 卡已通过 ESX/ESXi 认证。有关详细信息,请参见 VMware Hardware Compatibility List。
确保您的物理服务器的 BIOS 是最新的。有关详细信息,请参见 Checking your firmware and BIOS levels to ensure compatibility with ESX/ESXi (1037257)。
确保您的 HBA 的固件是最新的。有关详细信息,请参见 Slow performance caused by out of date firmware on a RAID controller or HBA (1006696)。
确保 ESX 可识别您的 SATP 存储阵列类型和 PSP 路径选择的正确模式及路径策略。有关详细信息,请参见 Verifying correct storage settings on ESX 4.x, ESXi 4.x and ESXi 5.0 (1020100)。
四, 网络延迟
网络性能可能会受到 CPU 性能的高度影响。在检查网络延迟之前排除 CPU 性能问题。
要确定性能低下是否是由于网络延迟导致的,请执行以下操作:
1, 使用 Iperf 工具测试来自虚拟机的最大带宽。可以从 https://code.google.com/p/iperf/ 获取该工具。
注意:VMware 不认可、不推荐任何特定第三方实用程序。
在使用 Iperf 时,将 TCP 窗口大小更改为 64 K。性能也取决于此值。要更改 TCP 窗口大小,请执行以下操作:
在服务器端,输入以下命令:
iperf -s
在客户端,输入以下命令:
iperf.exe -c sqlsed -P 1 -i 1 -p 5001 -w 64K -f m -t 10 900M
有关详细信息,请参见 http://openmaniak.com/iperf.php。
1, 使用 ESXi/ESX 主机以外的计算机运行 Iperf。根据您的物理环境,将其结果与预期结果进行比较。
2, 在同一物理交换机的同一 VLAN 上,使用 ESXi/ESX 主机以外的另一台计算机运行 Iperf。如果性能较好,且仅可使用另一地理位置的计算机重现问题,则此问题与您的网络环境有关。
3, 在同一 ESX Server/端口组/vswitch 上的两台虚拟机之间运行 Iperf。如果结果正常,则可以排除 CPU、内存或存储问题。
如果您确定在网络上存在瓶颈:
1, 完成 Troubleshooting network performance issues (1004087) 中的所有步骤。
2, 如果您使用的是 iSCSI 存储器和巨帧,请确保所有内容都配置正确。有关详细信息,请参见:
a) iSCSI and Jumbo Frames configuration on ESX/ESXi (1007654)
b) Enabling IOAT and Jumbo frames (1003712)
c) Enabling Jumbo Frames for VMkernel ports in a virtual distributed switch (1038827)
3, 如果您使用的是 Network I/O Control,请确保为您的流量正确配置了份额和限制。有关详细信息,请参见 Network I/O Resource Management in vSphere 4.1 with vDS (1022585)。
4, 确保正确配置了流量调整。有关详细信息,请参见《ESXi/ESX 配置指南》中的 Traffic Shaping Policy。