我通常在专用服务器上运行我的MSsql服务器,但是我们采用了在VMWare ESXi 4主机中运行sql Server的客户端,坦率地说它运行起来就像垃圾一样.
我们已经确定问题不是数据库本身.我们将相同的数据库部署到专用服务器上,该服务器的规格低于VMWare客户端,并且运行速度至少快5倍.
服务器是:
Dual Quad Core Xeon 2Ghz (I don't know the exact model) 24Gb RAM 4x 300Gb SAS (RAID 10) ESXi 4
主持人是:
4x vcpus 3Gb RAM 80Gb disk space Server 2008 Standard sql Server 2008 Workgroup
主机上的其他VM是非常低的流量.第二个DC(几乎未使用),低流量Web服务器和低容量终端服务器(在任何给定时间约5个用户)和其他一些misc客户端.
解决方法
好的,这里有一些提示,没有特别有利于绩效的顺序;
>确保VM在7型虚拟硬件上运行(在VM摘要中说明)
>确保所有VM磁盘都不胖
>升级到版本4更新1
>确保所有VM都安装了最新的vmtools
>对于W2K8 VM,请使用“LSI SAS”磁盘控制器和vmxnet3 NIC
>确保已在操作系统中打开交换
>禁用屏幕保护程序
>将视频帧缓冲区设置为4MB或更少
>从所有虚拟机中移除任何不必要的虚拟硬件,如软盘,串行,并行等.
>正如Zypher所说,在所有分配的vcpu都可用之前,ESX不会给VM任何vcpu时间 – 尝试将数量从4减少到3或2(不要害怕给VM 3,5或7个vcpu,它感觉奇怪,但工作得很好),也看看你的其他虚拟机,如果他们不需要它们,减少他们的vcpu – 这台机器真的没有那么多内核
>确保在BIOS中启用硬件虚拟化,并调整所有电源管理选项以提高性能
>查看您的VM的“份额”,考虑根据其重要性和当前行为增加和/或降低您的各种份额值/优先级 – 还要认真考虑您的预订选项 – 这些选项可以在竞争框中产生巨大差异.
>然后显然要查看sql VM的性能数据,特别是可用内存,%RDY和磁盘队列长度/等待
>考虑将磁盘添加到阵列和/或为此VM提供专用的vmdk /数据存储/磁盘
如果我想到任何好的话,我会添加更多,祝你好运.