默认情况下资源池中没有足够的系统内存来运行此查询


15

我在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由于资源池“默认”中的内存不足,不允许为数据库“ 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 Server的内存:12288 Mb

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

如果有帮助,则该服务器不承载任何SharePoint数据库。


服务器上的最大内存和总RAM是多少?
Kin Shah 2015年

Answers:


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仅具有两个有意义的安全修复程序,因此提供了SP1 +多个CU。

由于本文MEMORYCLERK_XTP使用的内存使用率也很高,in-memory OLTP因此可以帮助您进行故障排除:监视内存使用情况并进行故障排除

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.