在 SQL Server 2005 和 2008 中使用多实例故障转移群集(以前称为主动-主动)时,我想知道您将最小和最大服务器内存配置为什么。
对于双节点多实例集群(有两个实例,每个节点一个),最佳实践是在每个实例上将 min server memory 配置为 40-45%,以便在发生故障转移时两个实例不会最终会出现根本不平衡的内存量,因为新实例可能会对已经运行的实例施加过度的内存压力。
虽然这是一个最佳实践,但我想听听遇到这种情况的人的意见 - 您如何为各种实例配置内存设置?您是让它们相等还是按每个实例上运行的工作负载优先级?你使用 WSRM 吗?您是否根据故障转移后集群配置动态更改内存设置?
谢谢!
PS我不需要关于内存管理如何工作的信息,或者为什么存在最佳实践——我知道这一切——我对人们真正在做什么感兴趣。
PPS 注意,我对 SQL 2000 不感兴趣——它的内存管理器没有响应这种内存压力,因此最佳实践是将最大服务器内存设置为每个实例的 50%。玉。
刚刚为客户做了这个。他们在每个节点上有 16 个 Gig,每个实例使用 8 个 Gig。一个实例急需更多 RAM,因此我们将其提高到 12 个,并设置警报以监视 SQL 重新启动并发送消息。如果由于硬件故障而发生故障转移,他们会手动降低它,直到硬件修复。
我们的环境中有一些多实例集群,根据实例的目的,它对我们来说是不同的。在我们的 prod-prod 集群中,每个节点上都有 32Gb。我们为非 SQL(O/S、磁带备份进程、防病毒等)保留 4 个,然后将剩余的 RAM 减半(每个节点 32-4 = 28/2 = 14Gb。)这些是最大值,我们为每个设置了 8Gb 的最小值。
在我们的 prod-test 集群中,我们偏向于 prod(显然)。Prod 的最大设置为 20Gb,Test 的最大设置为 8Gb。分钟在 8Gb 时保持不变。
如果我们正在积极测试并希望确保我们的设置在 test 和 prod 之间匹配,则可以调整这些值。我们会提前安排此类更改。
我们也肯定会在内存中授予锁定页面,但不要启用敬畏,因为这些都是 64 位框。
在我们的例子中,我们自动调整内存(基于脚本)并基于我们对所有实例的内存消耗阈值。这样内存就被正确使用了。