内存(物理和虚拟页面)由于未知的原因而耗尽

最近我们的服务器变得很常挂起来。 我怀疑有内存泄漏,但仍然找不到任何嫌疑人。 事件日志logging下这样的情况:

- <SystemInfo> <SystemCommitLimit>49195651072</SystemCommitLimit> <SystemCommitCharge>49195651072</SystemCommitCharge> <ProcessCommitCharge>3172712448</ProcessCommitCharge> <PagedPoolUsage>432541696</PagedPoolUsage> <PhysicalMemorySize>16983396352</PhysicalMemorySize> <PhysicalMemoryUsage>16197967872</PhysicalMemoryUsage> <NonPagedPoolUsage>183476224</NonPagedPoolUsage> <Processes>139</Processes> </SystemInfo> - <ProcessInfo> 

如您所见,SystemCommitCharge达到SystemCommitLimit(〜45GB),但是ProcessCommitCharge仅为3GB。

我甚至检查了当时使用最多内存的三个进程,但是他们一起只使用了大约1GB。 大约有100多个进程,但是每个进程最多使用50MB。

Windows成功诊断出虚拟内存不足的情况。 以下程序消耗了大多数虚拟内存:消耗了565637120个字节的sqlservr.exe(4480),消耗了362201088个字节的mysqld.exe(4500),以及消耗了314191872个字节的java.exe(1628)。

似乎一切似乎都表明,除了我的stream程,还有一些资源浪费了。

还有一件事我注意到,目前(系统重启后)我们的承诺内存和caching比正常的内存使用增加很多。 但是,当使用Rammap进行仔细检查时,我发现大部分内存都是Stand By,这意味着它不应该影响系统性能。 另外,非分页内存现在只有133MB,所以驱动程序的故障不应该成为问题。 我无能为力

仔细检查我们的服务器3天,我可以看到使用的内存一点点增加,从:

(30/08)

使用中= 3.4 GB提交= 5.3 GBcaching= 2.2 GB分页缓冲池= 225 MB非分页缓冲池= 76.2 MB到

(01/09)

正在使用= 3.9 GB已提交= 23.9 GBcaching= 11.9 GB分页缓冲池= 335 MB非分页缓冲池= 133 MB

有没有办法检测这个“神秘因素”?

你可以检查使用Poolmon的内存泄漏…

它是Windows驱动程序工具包(WDK)的一部分。

来自Microsoft的一些有用的链接:

http://msdn.microsoft.com/en-us/library/ff545405(v=VS.85).aspx

http://msdn.microsoft.com/en-us/library/ff550458.aspx

http://msdn.microsoft.com/en-us/library/ff550442(VS.85).aspx