资源池默认系统内存不足,无法运行此查询

tat*_*chi 16 sql-server sql-server-2014

我在 Windows Server 2012 上使用 SQL Server 2014 - 12.0.2269.0 (X64),但遇到了一些内存问题。当我运行一个执行相当“繁重”计算的存储过程时,我在大约 10 分钟后收到一个错误:

资源池“默认”中的系统内存不足,无法运行此查询。

我的 SQL Server 有多个数据库(比如 15 个,但它们并不总是同时使用)。我查看了 SQL Server 日志文件(在我得到错误之后),我看到了很多这样的行:

2015-12-17 12:00:37.57 spid19s 由于资源池“default”内存不足,不允许为数据库“Database_Name”分配页面。有关详细信息,请参阅“ http://go.microsoft.com/fwlink/?LinkId=330673 ”。

在日志中生成一个报告,其中包含每个组件使用的内存(我认为)。如果我正确解释了报告,我们可以看到MEMORYCLERK_SQLBUFFERPOOL. 您可以在此处找到该报告:http : //pastebin.com/kgmk9dPH

我还生成了一个带有图表的报告,该图表显示了相同的“结论”:

![内存使用情况

这可能是另一个有用的报告:

在此处输入图片说明

在此处输入图片说明

请注意,我还在日志中看到了此错误:

2015-12-17 12:04:52.37 spid70 由于数据库内存压力导致页面分配失败:FAIL_PAGE_ALLOCATION 8

以下是有关服务器内存的一些信息:

  • 服务器上的总内存:16 Gb

  • 分配给 SQL 服务器的内存:12288 Mb

  • 使用中的物理内存(来自sys.dm_os_process_memory):9287 Mb

如果它可以提供帮助,则该服务器不会托管任何 SharePoint 数据库。

Tom*_*m V 6

虽然这可能不是您问题的确切答案,但无论如何我都会发布它,希望它可以在某种程度上帮助您。

你所看到的不是,MEMORYCLERK_SQLBUFFERPOOL而是MEMORYCLERK_SQLLOGPOOL占据了所有的记忆。

SQL 2012 存在一个已知问题SQL Server 2012 遇到内存不足错误。即使您运行的是 2014 年,您也有可能遇到同样的问题(即使我找不到 2014 年的连接项)。

2014 年和 2012 年也存在这个已知问题,涉​​及索引重建和always on. 您没有指定您正在使用它,但可能相同的错误还有其他触发器:FIX:当您为 SQL Server 中的表重建索引时,SQL 缓存内存减少且 CPU 使用率增加

所以我现在最好的建议是更新到最新的 CU,看看它是否仍然发生,因为MEMORYCLERK_SQLLOGPOOL最近有一些修复。由于您运行的 RTM 仅具有 2 个有意义的安全修复程序,因此有一个 SP1 + 多个 CU 可用。

由于本文MEMORYCLERK_XTP使用的内存使用率也相当高,in-memory OLTP因此可以帮助您进行故障排除:Monitor and Troubleshoot Memory Usage