在运行SQL服务器的虚拟环境中,我们已经有一段时间遇到了奇怪的问题。
我们随机地接到用户关于SQL框上性能非常差的电话。当然,当我看的时候,我看到CPU是100%的。我对另一个主机执行一个VMotion,一旦它完成,移动到另一个主机的性能就会立即恢复正常。
我一直在与VMWare管理员合作,他们向我保证,VMotion不会影响Servers上的任何内容。这几乎就像转移到另一个主机会导致执行计划的更改等等。然而,我不明白,为什么VMotion的使用率会从屋顶上跳过,除非是一个糟糕的查询计划,因为参数嗅探导致了重新编译,但是我认为VMotion不会修复这个问题,因为它应该是透明的。
VM场由19台戴尔服务器(对不起,我不知道确切的模型)组成,每个套接字上有2个物理套接字和12个核心。
以前有没有其他人观察过这种行为?我想知道这是否与容量有关,因为主机似乎需要处理一些大型‘m(大约有1480GB,12个核心’m)。即使有了农场上的那些VM,我也可以在Vsphere控制台中看到主机并没有被过度利用(内存在很多时候都会上升到80%,但没有膨胀)。
此外,所有不同版本的SQL都会出现这种情况(2008、2008、R2、2012和2014年)。
非常感谢您的洞察力!
发布于 2016-02-29 20:10:06
VMWare VMotion不会重新启动服务器、重新启动任何服务或丢弃缓存。VM在VMotion期间保持活动状态,所以您不应该丢失缓存或计划,除非您要移动的主机处于严重的内存压力下,并且气球处于活动状态。
在VMotion期间所发生的事情是增加了网络延迟,并且在迁移过程中可能出现了下降的ping,但是迁移结束后,这种效果就完全消失了,不应该影响客户内部的CPU使用。
但是,您需要理解的是,来宾内部使用的%CPU是从虚拟机管理程序(而不是底层CPU)分配给您的资源池中消耗的%,因此,如果从分配给您4 2Ghz的主机转移到分配给2 2Ghz的主机,则来宾内部的CPU使用量将加倍。
您可以在来宾VM中监视一些性能计数器,以查看从Hypervisor获得的实际CPU时间,如:
请参阅从这里开始
这可以让您了解实际获得的MHz,以及VMWare配置所施加的任何限制等。
如果您已经确定Hypervisor没有为您的VM分配足够的周期,那么您可以使用设置保留来保证一定数量的MHz,或者在VM中添加一个cpu权重,使VM比其他VM更优先。
如果您可以访问esxtop (而不是vCenter中平坦的抽样平均值图表),您应该关注%RDY (指示您的VM有等待物理cpu的线程)或%CSTP (指示共同调度问题)。有关更多信息,请通过这个黄砖柱阅读
由于您是说主机有其他高负载VM,所以您还需要考虑到,当配置为默认值时,VMWare正在尝试将资源分配给要求最高的VM。另一个VM中的负载突然增加可能会对VM的cpu分配产生显著(暂时)影响。
除非存在严重的内存压力问题,否则我不知道如何获得缓存刷新,除非新主机通过气球驱动程序或动态内存设置回收大量内存,从而导致缓存刷新。否则,机器就会保持活动状态,内存也会被同步复制。
https://dba.stackexchange.com/questions/130828
复制相似问题