VMware ESX虚拟机,Windows 2008 Server R2,内存已满,但进程总在哪里?

我们已经在Windows 2008 R2服务器上build立了一个TFS 2010服务器,并且最近已经开始超时并给予较长的操作时间。

当我login到机器,我可以看到,任务pipe理器性能选项卡说,分配3.86GB,但是当我去进程选项卡,总结所有正在运行的进程,我最终在700和900MB之间,取决于机器运行了多久。

我在类似的标题列表中发现了这个问题,希望它能帮助我:

Windows Server 2008 R2中奇怪的内存使用情况

我在列表中运行了SQL查询,给了我下列项目:

  object_name计数器名称cntr_value cntr_value_MB
 ------------------------- ------------------------- -  ------------------------
 SQLServer:缓冲区pipe理器数据库页面988 8.000000000
 SQLServer:缓冲区pipe理器空闲页面140 1.000000000
 SQLServer:缓冲区pipe理器总页数2923 23.000000000
 SQLServer:内存pipe理器目标服务器内存(KB)23384 22.000000000
 SQLServer:内存pipe理器总计服务器内存(KB)23384 22.000000000 

我不明白这是否解释了记忆问题,但是我认为如果问题与该问题相同,那么最后一列应该表示更高的值。 我甚至将SQL Server的内存使用限制为3GB,而当前进程选项卡显示sqlservr.exe使用92MB的内存。

另外请注意,4GB已经足够用于这台机器了,而且我们在正常运行时没有任何性能问题或问题,但最近的行为变化令人不安。

该机器是在VMware ESX 4.1服务器上运行的虚拟机,可以这样吗? 我已经阅读了VMware使用的“内存气球”,以便在其他紧张的系统中窃取内存,但物理服务器上的可用内存总量为32GB,性能概述说明其中有17个可用。

还有什么我应该看看,或者我应该怎样看待上述数据?

重新启动后,机器回到我所称的可解释的数字,但它在一天中缓慢地回升到4GB,然后开始超时。

另外请注意,我并不是100%肯定内存导致超时,但机器运行良好,直到内存接近那些4GB,所以至less它似乎是链接的,但它当然可以是两个不同的效果从同样的原因。

至less有一个月没有任何窗口的更新至less一个月,无论是好的还是坏的,所以没有任何维护与问题出现时相吻合。

无论何时发生“抖动”,主机的性能都会立即降级 – 在紧张的内存条件下不断进出内存页面。

你可能在某个地方有内存泄漏 。 如果任务pipe理器没有显示单个进程的过多的内存使用情况(顺便说一句,你看的是哪个值?任务pipe理器通常显示私有字节,尽pipe你应该查找当前物理内存使用的“工作集”),内核模块/驱动程序可能是另一个可能的候选人。 看一下Process Explorer的内存统计信息,特别是内核内存的使用情况 – 它们会更加详细,可能会让你更进一步的解决。

看看页面命中是一个更好的内存过量指标。 如果您经常碰到页面,性能下降很可能是由于内存不足的情况。 否则,我会看看其他地方。

除非你已经启用了气球驱动程序(然后你会看到它的使用),这不是问题。