在几天的时间里,我们的数据库服务器上的被盗内存增长缓慢。它似乎稳定在 130-140GB 左右,此时我们开始遇到更大的问题,例如内存不足错误、多秒冻结和 AG 故障转移。重新启动后大约一周开始出现问题。我已经开始记录被盗内存的历史,如下图:
查看sys.dm_os_memory_clerks
,似乎其中大部分来自记录在 NUMA 节点 0 上的缓冲池中的非页面内存:
pages_kb
随着时间的推移跟踪缓冲池的总数显示页面数量随着virtual_memory_committed_kb
增长而下降。(4 月 13 日,服务器因 windows 更新而重新启动。缓冲池在大约一个小时内填充到 400GB)
有没有人见过这种行为?
我们正在运行 SQLServer 2016 CU12 13.0.5698.0 服务器是一个 64 核的 AWS EC2 i3.16xlarge 实例。我们有许多其他相同大小的集群都显示了这个问题。我们在 32 核 i3.8xlarge 实例上也有一些集群,这些集群也显示了被盗内存的增长,但它们最终不会停止/抛出内存不足错误。唯一的区别(除了规模)是 64 核服务器有 2 个 NUMA 节点。
更新: MS 表示 KB4536005 中的错误修复没有被反向移植到 SQL2016。