Windows Server 2008 R2 64 位内存泄漏

Gui*_*oby 12 windows-server-2008 memory virtual-machines cache sql-server

我的一台办公室服务器出现问题。它是一个具有 6GB RAM 内存的虚拟化 Windows 2008 R2 服务器。它只有 Microsoft SQL Server(分配的最大内存 = 3GB),以及一个不消耗超过 1GB RAM 的软件。但是,服务器的 RAM 内存几乎已满,查看任务管理器中的进程,他们似乎无法总结这一点。我已经安装了 RamMap,但不能很容易地解释它,你能识别出任何“高价值”吗?

在此处输入图片说明

Rya*_*ies 18

好吧,我看到了大约 3.2 GB 的驱动程序锁定内存,这立即显得可疑。

这种内存称为驱动程序锁定内存,是已被内核模式驱动程序锁定的内存。典型地用于转移的目的的数据量,通常为的时间段。

所以,如果你有一个大的块驱动器锁定内存,对于的时间,它通常是一个迹象,表明事情是不对的。

我将在这里大胆猜测一下,既然你提到它是一个虚拟化服务器,那么它就是 VMware 气球驱动程序在做这件事。我没有足够的数据来告诉你为什么要这样做,但是有很多案例和 VMware 支持知识库,比如这个,专门讨论了气球驱动程序错误地保留了大量内存时它应该'不会。

您还必须考虑气球驱动程序是否按设计运行的可能性,并且它试图使您的服务器页面内存不足,因为它迫切需要将内存分配给同一主机上的另一个 VM。

还有另一种可能性,它根本不是管理程序动态内存驱动程序,而只是一些流氓设备驱动程序。

驱动程序通常分配用 3 或 4 个字符的标记“标记”的内存,该标记提示负责进行分配的驱动程序。
poolmon.exe 是 Windows SDK/DDK 的一部分,可以帮助诊断。

就像我说的,疯狂的猜测,但这是我对我拥有的数据所能做的最好的事情。


Kit*_*tet 16

嗯,从 2005 年到 2016 年,我在本地拥有所有可以想象的 SQL Server 版本,而且我还没有看到任何内存泄漏与实际使用的 mem 的 100% 一样大。查看是否为虚拟机启用了动态内存

Driver Locked是一个你应该关注的数字。在您的特定情况下,Driver Locked可能是 Hyper-V 驱动程序之一,它锁定了所有未使用的内存(分配给 VM,但它未使用 atm),因此它可以将其“提供”给其他配置了动态内存的 VM,甚至主机操作系统,以目前需要的为准。您可以通过在该虚拟机内打开一些大文件或内存密集型应用程序来测试它 - DriverLocked 内存应该随着其他一些指标的增加而下降。恕我直言,如果您没有在所有 VM 上过度配置太多内存,这应该不会引起关注。

  • 我比你快 8 秒……欢迎来到 Server Fault。:) (5认同)