为数据库服务器分配 Vmware CPU

为数据库服务器分配 Vmware CPU

我有一个数据库服务器,其中有许多编写不当的查询,导致 SQL 服务器不断出现峰值然后下降(大量从头开始)。我需要知道在这种情况下,按需扩展虚拟机上的 CPU 分配是否是最佳实践。我想知道 esxi 平台是否不能像峰值发生时那样快速扩展。

我很好奇在 SQL Server 上虚拟机 CPU 分配的最佳实践是什么(查询写得很糟糕)

答案1

观察、调整并尝试正确调整虚拟机的大小。

这确实是你唯一能做的。

VMware 没有以下概念自动缩放就动态添加额外的 CPU 资源而言……​​但是,VM 将使用您为其提供的资源。这里没有“资源扩展”。

例如,如果您分配 2 个 2.8GHz 的虚拟 CPU,则虚拟机的正常 CPU 需求将在 50MHz 到 5600MHz 之间。实时观察系统,查看其反应,然后从那里开始。

答案2

CPU 管理相当实时。实际上,CPU 时间被划分为 20ms 量程(如果我没记错的话)。因此,只要有足够的空闲 CPU,事情就会相对顺利。

如果数据库服务器和其他虚拟机之间存在 CPU 争用,那么有人会赢,有人会输。

你可以使用几个因素:最小值、最大值和份额。如果你不想让 DB 干扰其他机器,你可以给它较低的 CPU 份额,或者给它一个最大的 CPU 时间。如果你确实想让 DB 具有高优先级,你可以给它一个最小的保留 CPU 时间,或者高的份额。

另一个建议是不要为虚拟机分配过多的 vCPU,因为这可能会适得其反。在最坏的情况下,即使有空闲的物理 CPU,系统也可能无法调度虚拟机。您可能会注意到这一点,因为性能图表中的“同步停止”值很高。

此外,如果您有 DRS 许可证,您可以为 DB VM 提供一些最低 CPU 预留,以便系统尝试在具有足够备用 CPU 的 ESXi 上调整该机器的速度。

答案3

考虑实施类似 vCenter Operations Manager 的东西来更好地了解这些高峰和低谷,它是精选捆绑包的一部分。也就是说,如果您预先过度分配 CPU,则几乎没有什么真正的缺点。

相关内容