我有一个运行多个数据库的SQL2012 SP4节点。
该服务器有20GB可用内存,已为SQL分配了14GB内存(包装盒上没有其他任何东西)。
SQL每隔几分钟就会转储整个缓冲区高速缓存。页面预期寿命为零,缓冲区高速缓存描述符显示高速缓存中没有任何内容。
我查看了资源监视器通知,并且通知每隔几毫秒从高/稳定/低反弹一次:
RESOURCE_MEMPHYSICAL_LOW RESOURCE_MEM_STEADY RESOURCE_MEMPHYSICAL_LOW
时间戳相隔几毫秒。PLE本质上是锯齿形。
我已经在SQL2012 SP1和以下问题之前看到过这种情况:
未使用缓冲区高速缓存中的SQL Server 2012可用页
似乎是类似的问题,尽管我已经更新到SP4。
我尝试为该服务帐户打开LPIM,并且尝试弄乱最大内存设置。降低最大内存似乎已导致缓冲区缓存更频繁地清空。
关于下一步要检查的任何想法?
服务器工作负载实际上什么都没有(我正在滚动浏览ERP系统中的项目列表,在缓存再次下降之前,它达到了40-50MB)。
这很有趣,因为我从SP1升级以尝试解决此问题-那里的缓存已达到500MB左右。从那以后,我将最大内存设置降低到14GB,这似乎使情况变得更糟。
我想知道Windows是否惊慌并在SQL上发出有关内存压力的不正确通知-随之而来的是,将最大内存设置为无界的服务器似乎运行正常,但永远不会填满超过几百MB的缓存-但现在它刚到50岁...
更多信息:对于那些询问
核心数: 4
数据库大小: 80GB
错误日志显示: A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 247928, committed (KB): 495656, memory utilization: 50%.
从此链接运行脚本的结果:https : //www.sqlskills.com/blogs/jonathan/identifying-external-memory-pressure-with-dm_os_ring_buffers-and-ring_buffer_resource_monitor/
不确定如何解释它们-看起来在不同时间都有内部和外部内存压力。
更多信息:
这是一台Hyper-V来宾,坐在主机上,总内存为96GB,其中约一半分配给了来宾。
症状似乎与此类似:
SQL Server 2012 x64-无法安全分配超过50%的RAM
但是,当我为SQL分配14GB时,症状立即出现(仅有3GB的服务器内存被提交)
昨晚,我将客户机内存增加到32GB,问题消失了,但是我看到只有14GB的服务器总内存提交了(运行DB的业务今天早上很忙,这是他们通常遇到性能问题的时候)。
目前,缓存中大约有8-9GB的数据,看起来很稳定。
似乎表明20GB足以满足此框上的工作负载。我现在很高兴将其留给32GB,但我真的很想深入了解它,以便更好地配置VM / SQL。
如果找到答案,我将继续挖掘和更新!
更多信息:
开启LPIM之后,我没有重新启动SQL(没有意识到这是必需的),但是我确实保留了此设置并重新启动以升级内存,所以现在我不确定内存的增加或LPIM是否已缓解了问题。
今晚服务器空闲时将跳入并再次检查其20GB的外观。
更多信息:
目前,服务器分配了32GB的内存,一切正常,此后我们再也没有发现问题。如果再次出现,我将回到这个问题并继续挖掘。
目前仍然是个谜,但是我的猜测是我目前只是掩盖这些问题。