SQL Server 占用太多内存

JSC*_*JSC 6 sql-server memory sql-server-2014

我们的一个 SQL Server 出现了我以前从未见过的问题。

SQL Server(企业版)运行的数据库只有 70MB 的数据。但几个小时后,服务器需要 10 GB 或更多内存。几天后,服务器内存不足。我已经在 SSMS 中配置了最大内存参数,但它没有帮助。

你有什么想法怎么做才能找到问题吗?

这是 dbcc memorystatus 结果的链接:https ://drive.google.com/open ? id = 0B2FJAT6lteKJOEJmUFdqb0ZERFU

数据库版本:Microsoft SQL Server 2014 (SP2-CU5) (KB4013098)。企业版。这是一个虚拟机。

我检查了另一个线程,发现了这个查询:

SELECT TOP (21) [type] = COALESCE([type],'Total'), 
  mb = SUM(pages_kb/1024.0)
FROM sys.dm_os_memory_clerks
GROUP BY GROUPING SETS((type),())
ORDER BY mb DESC;
Run Code Online (Sandbox Code Playgroud)

我在 SQL Server 上运行它并得到以下结果:

  1. 总计 = 2452,9
  2. CACHESTORE_SQLCP = 2141,5
  3. MEMORYCLERK_SQLBUFFERPOOL = 160
  4. MEMORYCLERK_SOSNODE = 33
  5. USERSTORE_SCHEMAMGR = 30.94

cachestore 的值在它只运行了几个小时后就这么高,这是否正常?

运行此查询:

select value_in_use
from sys.configurations
where name = 'max server memory (MB)'
Run Code Online (Sandbox Code Playgroud)

给出结果 8192。这是我们为实例配置的值。

目前我们必须每晚重新启动 SQL Server,这样它就不会使用太多内存。

Sti*_*ing 1

起初,你的问题让我感到惊讶。通常,我见过最大服务器内存配置不正确的内存问题。但后来我开始仔细研究累积更新,并意识到它们是贯穿 SQL 2014 所有这些累积更新的内存泄漏雷区!这就像微软从他们的 SQL 6.5-7.0 剧本中得到了暗示,然后对我们进行了复古。

与其花费数小时排除故障,我会考虑:

选项 A: 拍摄 VM 快照并安装 SQL 2014 sp2 的最新累积 7 更新。并在必要时回滚。(看来此更新中包含与 SSAS 相关的内存泄漏)。

选项 B: 创建一个 Microsoft 支持票证,以帮助您和我们其他人摆脱困境,方法是在累积 8 版本发布时添加内存泄漏修复程序。并根据 Microsoft 的调查结果更新您的问题。

就我个人而言,我认为在任何情况下,我都不认为 SQL Server 超出其最大内存限制有任何令人满意的理由。