一个故障转移群集有两个节点,每个节点有64GB RAM: – 节点A和节点B.节点A运行2个SQL实例(SQL1和SQL2)。 节点B运行1个SQL实例(SQL3)。
SQL1 has a max server setting of 30,720MB and min server setting of 1024MB. SQL2 has a max server setting of 8192 MB and Min server setting of 1024 MB. SQL3 doesn't have any min & max settings.
从perfmon跟踪Available mbyte , target server memory和total server memory后,我收集了以下内容:
SQL1:- Available MByte: 26GB, Target Server Memory: 30GB, Total Server Memory: 29.8GB SQL2:- Available MByte: 24GB, Target Server Memory: 8GB, Total Server Memory: 7GB SQL3:- Available MByte: 58GB, Target Server Memory: 54GB, Total Server Memory: 1GB
请注意,这是主动/主动故障切换群集。 我的问题是如何设置最大和最小内存? 这是具有SQL 2008 R2实例的64位Win2k8 R2服务器。 我已经计算并达到了7GB,离开OS,工作线程,多页面和其他应用程序。 但是,我需要弄清楚如何平衡SQL实例最小和最大内存设置。 我如何知道每个实例所需的内存? 设定分钟的最佳做法是什么? 请帮忙。
这个最大和最小值已经被某个人设置在实例上,我认为这将不会像HAscheme那样准确。 所以,我需要调整它,需要你的意见,我可以如何调整它。 或者,我怎么能确定哪个实例需要这么多的内存。 我想总之如何确定每个实例的内存利用率。
您将设置最小值以适应完整的故障转移,否则您的HAscheme将无法工作。 我不太了解SQL,但是,我非常肯定MS只支持主动/主动关于SQL的HA不负载共享。
这里没有太多的信息可以介绍,比如SQL数据库在做什么以及为什么这个集群是主动/主动的。
我只能从上面的细节中假设:
在故障转移系统上,SQL3只有18GB的内存。 SQL3如何在普通RAM的1/3以下运行? “目标大小”表明它喜欢大量的RAM。
最小和最大服务器内存选项告诉sql服务器应分配多less缓冲区RAM。 我在我的笔记中build立了SQL集群,这些集群来自MSDN
检查负载下的SQLServer:Buffer Manager性能对象,并记下被盗页面和保留页面计数器的当前值。 这些计数器将内存报告为8K页的数量。 最大服务器内存应设置为高于这两个值的总和以避免内存不足错误。 最低合理的最大服务器内存设置(以MB为单位)的近似值为([被盗页面] + [保留页面])/ 100。
棘手的一点是,如果你发现你没有足够的内存空间,每个人都可以在最小的服务器内存中感到满意,那么你现在必须select你最不喜欢的实例,让它受到影响,或者分担痛苦,很less受到影响。
“最servlets器内存”定义了SQL将停止dynamic释放内存的限制。 这个设置通常是不必要的。 它并不能保证SQL Server至less可以分配这么多的内存。 当SQL Server启动时,即使小于“最servlets器内存”限制,它也会提交尽可能多的内存。 随着更多的数据页面和查询计划被caching,SQL提交的内存增加。 当提交的内存增加到“最servlets器内存”限制以上时,SQL可以根据需要释放页面(降低到该限制),以保持最小空闲物理内存大约10 MB