在 VMWare ESXi 中优化 MSSQL 2008 服务器

在 VMWare ESXi 中优化 MSSQL 2008 服务器

我通常在专用服务器上运行我的 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

主机上的其他虚拟机流量非常低。第二个 DC(几乎未使用)、低流量 Web 服务器和低容量终端服务器(任何给定时间约 5 个用户)以及一些其他杂项客户机。

很久以前,我读过一篇关于在 Windows 和 SQL 服务器中设置一大堆分页设置来优化它的文章,但我再也找不到它了 :(

有没有什么技巧或窍门可以提供来提高 SQL 性能?

答案1

好的,这里有一些技巧,没有特定的性能改进顺序;

  • 确保虚拟机在模型 7 虚拟硬件上运行(虚拟机摘要中显示)
  • 确保所有虚拟机磁盘都是胖磁盘而不是瘦磁盘
  • 升级至版本 4 更新 1
  • 确保所有虚拟机都安装了最新的 vmtools
  • 对于 W2K8 VM,使用“LSI SAS”磁盘控制器和 vmxnet3 NIC
  • 确保操作系统中已打开交换功能
  • 禁用屏幕保护程序
  • 将视频帧缓冲区设置为 4MB 或更小
  • 从所有虚拟机中删除任何不必要的虚拟硬件,例如软盘、串行、并行等。
  • 正如 Zypher 所说,ESX 不会给虚拟机任何vCPU 时间直到全部分配的 vCPU 可用 - 尝试将数量从 4 减少到 3 或 2(不要害怕为虚拟机提供 3、5 或 7 个 vCPU,这感觉很奇怪,但工作正常),同时查看其他虚拟机,如果它们不需要,请减少它们的 vCPU - 这台机器实际上没有那么多核心
  • 确保 BIOS 中启用了硬件虚拟化,并且所有电源管理选项都针对性能进行了调整
  • 查看您的虚拟机的“共享”,考虑根据其重要性和当前行为增加和/或降低各种共享值/优先级 - 也认真考虑您的预留选项 - 这些选项可以在有争议的盒子中产生巨大的差异。
  • 然后显然要查看 SQL VM 的性能数据,特别是可用内存、%RDY 和磁盘队列长度/等待
  • 考虑向阵列添加磁盘和/或为该虚拟机提供专用的 vmdk/数据存储/磁盘

如果我想到更多的话我会添加,祝你好运。

答案2

去得到vSphere 远程 CLI(转到驱动程序和工具 -> 自动化工具和 SDK)

完成设置后,登录到框并使用 esx top 查看瓶颈在哪里(信息链接

由于您正在运行 4 个 vCPU,请注意 esxtop 中处理器屏幕的 %RDY 列。这是机器等待同时访问 4 个 CPU 的时间。根据您使用的 VMWare SE,任何超过 2-5 个的情况都是不好的。

您还可以查看 VIC 的“性能”选项卡下的图表来了解发生的情况,特别仔细查看内存图表,注意高内存气球。

答案3

也许虚拟化只是数据库性能本来就很差的一个标志。虽然数据库性能在虚拟化时总是特别麻烦,但如果流量不是很高,那么通过将热数据保存在 RAM 中,数据库没有理由不能合理地执行。我会检查 SQL 性能,看看它是否使用了分配的 3GB RAM(您可以给它更多吗?),以及检查索引、碎片数据库文件、特别是可以通过重写或使用额外索引受益的坏查询等。

答案4

正如其他人所说,在总共只有 8 个核心的机器上安装 4 个 vCPU 是很多的。您可能会遇到很多处理器调度争用。我会将其减少到 1 或 2 个,看看性能是否会提高,然后再从那里开始。

相关内容