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