我希望这有一个非常简单的解决方案,但我觉得它不会。我无法在其他任何地方找到有关此的任何信息,这不是一个好的开始!
基本上,我们在具有16GB RAM的Windows Server 2008 R2机器上运行SQL Server 2008。
问题是我们的 RAM 使用量不断攀升至 15.6GB 并导致我们出现问题,我想知道它是否可能是 SQL 的缓存。
我们现在已经将 SQL 配置为使用 13GB 的最小/最大容量,但我仍然担心它可能会占用 RAM,所以在我重置服务器并清除正在使用它的任何东西之前,我想我会试试看它背后是否是SQL。
如何查看 SQL 的缓存 RAM 使用量大小?只是任务管理器里的那个数字吗?
谢谢你的帮助。
性能监视器
首先看Process对象类型。这对系统上的每个进程都有一个实例,并包含虚拟字节、虚拟字节峰值、工作集和工作集峰值等指标。SQL Server 的实例将以进程名称“sqlservr”命名。查看所有实例,您可以快速查看哪个进程导致的内存消耗最多。
接下来看看 SQL Server 自己的计数器。在 SQL Server:Buffer Manager 对象中,您将找到 SQL Server 自己的计数器。您需要查看对 SQL Server 内部跟踪的所有内存进行计数的 Total Pages 计数器。计数器以pages为单位,因此您需要乘以 8192 才能获得字节。
Process Virtual Bytes 计数器和 SQL 自己的 Total Pages 之间可能存在很大差异。当 SQL 使用 AWE 映射内存时会发生这种情况,并且 SQL 也可能在 x64 平台上使用 AWE。
您还可以从 iside 跟踪 SQL Server 内存消耗,查看sys.dm_os_memory_clerks或运行DBCC MEMORYSTATUS。
如果您发现 SQL Server 使用了内存:关闭会话,放下键盘,然后走开。这是正常的、预期的和期望的行为。如果您需要任何其他进程的内存,请将该进程从与 SQL 相同的主机移开。永远不要在运行 SQL Server 的同一主机上运行其他任何东西(没有 IIS、没有 ASP、没有交换、没有 DC、没有 DNS/Winds,什么都没有)。
只是一点评论:如果您可以自由地“重置服务器并清除正在使用它的任何东西”,那么您也可以简单地停止 SQL Server 服务。
如果你这样做,你就会确定它是否真的是 SQL Server 正在耗尽你的所有内存。