我们在 VMWare 环境中遇到了无法解释的性能问题,我希望这里有人可以提供帮助。我们有一个使用数据库后端的 Web 应用程序。我们在物理节点和虚拟节点之间的 Windows 2003 R2 上设置了 SQL 2005 群集。两个物理服务器都是相同的 2950,具有 2 个 Xeaon x5460 四核 CPU 和 64GB 内存,其中 16GB 分配给操作系统。我们正在为所有群集磁盘使用 iSCSI San。问题是,当在重复的压力测试下使用该应用程序时,将 CPU 添加到群集节点,物理节点从 1 pCPU 扩展到 8 pCPU,这意味着我们看到性能持续提升。在测试运行 Vsphere 的节点时,我们预期虚拟性能会下降 12%,但我们仍像物理节点一样从 1 vCPU 扩展到 4 vCPU,但除此之外,性能会下降,当我们达到 8 vCPU 时,我们看到的性能数字比 4 vCPU 更差。再次强调,两个节点在硬件、客户操作系统、SQL 配置等方面的配置完全相同,并且除了系统上的测试之外没有其他流量。虚拟服务器上没有其他虚拟机,因此应该不存在资源竞争。我们已联系 VMWare 寻求帮助,但他们并没有提出任何建议,例如设置 SQL 处理器亲和性,虽然这很有用,但对每个框的净效果相同,并且不会改变我们的结果。我们查看了 VMWare 的所有与 VSphere 相关的 SQL 调优指南,但没有任何帮助,请帮忙!
答案1
我犹豫着是否要把这个作为答案,因为我对此没有太多具体的支持,但这可能是你看到的问题的原因。我以前听说过(并且这页面支持这一点)表明,当 VM 具有多个 CPU 时,VMWare CPU 调度会变得更加困难。对于单 CPU VM,只需调度一个主机处理器。但是,当 VM 具有多个 CPU 时,VMWare 必须调度多个处理器以供 VM 使用,这可能需要更长的时间。随着 VM CPU 数量的增加,调度会变得越来越困难,这意味着 VM 的性能实际上会变差,因为它更难获得分配给它的处理器时间。
另外,我重读了您的最后一条评论,最近我也遇到了 vSphere 中的争用问题。您可能还想尝试的另一件事(如果您还没有尝试过)是增加此虚拟机的资源分配,即使它是目前唯一的虚拟机。
答案2
您的设置非常简洁;-)
vCPU 是否已达到其最大容量?CPU 等待、CPU 就绪和 CPU 使用率图表告诉您什么?
随着您向虚拟机添加更多的 vCPU,主机系统上管理 vCPU 并将其映射到物理 CPU 的开销也随之增加。有时,您无法通过简单地添加更多 vCPU 来提高虚拟机的性能。
您是否检查过 iSCSI SAN 上是否存在性能问题?检查图表中的磁盘读取和磁盘写入请求,当然还有磁盘读取和写入速率,并将它们与物理集群成员的进行比较。
也许一些价值观可以为您指明正确的方向。
答案3
需要澄清的是,您使用 8 核 (2 x 4) ESX 盒来托管单个 8 vCPU VM,并且第 5 个及后续 vCPU 的性能没有得到真正的提升,对吗?我可以问一下为什么您不使用与物理 SQL 盒相同的主机吗?您在那里使用了约 5-6 千美元的 Enterprise Plus 许可证,但似乎没有任何好处(即使您没有看到性能问题)——抱歉,我不明白。