VMware ESX 虚拟机,Windows 2008 Server R2,内存已满但进程总数还远远不够?

VMware ESX 虚拟机,Windows 2008 Server R2,内存已满但进程总数还远远不够?

我们已经在 Windows 2008 R2 服务器上设置了 TFS 2010 服务器,并且它最近开始超时并导致操作时间过长。

当我登录到机器时,我可以看到任务管理器性能选项卡显示分配了 4 GB 中的 3.86 GB,但是当我转到进程选项卡并总结所有正在运行的进程时,我最终得到 700 到 900MB 之间的某个值,具体取决于机器运行的时间。

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

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

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

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

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

还请注意,4GB 以前对这台机器来说已经足够了,并且当它正常运行时,我们没有遇到任何性能问题或疑问,但最近行为的变化令人不安。

该机器是运行在 VMware ESX 4.1 服务器上的虚拟机,可能是这样吗?我读过有关 VMware 使用的“内存气球”的文章,它可以窃取原本紧张的系统中内存,但物理服务器上可用的总内存为 32GB,而性能概述显示其中 17GB 可用。

我还应该关注什么,或者我还应该如何查看上述数据?

重新启动后,机器会恢复到我所说的可解释的数字,但它会在一天的时间里慢慢回到 4GB,然后开始超时。

还请注意,我不能 100% 肯定内存是导致超时的原因,但在内存接近 4GB 之前,机器运行良好,因此至少看起来它们是相关的,但当然也可能是同一原因导致的两种不同结果。

至少一个月以来,这台机器上都没有任何 Windows 更新,无论好坏,因此没有与问题开始时相吻合的维护。

答案1

每当发生“抖动”时,主机的性能就会立即下降 - 在内存紧张的情况下不断地换入和换出内存页面。

你可能有一个内存泄漏某个地方。如果任务管理器没有显示单个进程的内存使用量过大(顺便问一下,你看的是哪个值?任务管理器通常显示私有字节,但你应该查看当前物理内存使用量的“工作集”),内核模块/驱动程序可能是另一个可能的候选者。看看进程探索器的内存统计数据,尤其是内核内存使用情况 - 它们将更加详细,并且可能会让您更进一步地解决问题。

答案2

将页面点击率视为内存过量使用的更好指标。如果您过于频繁地点击页面,则性能下降很可能是由于内存分配不足造成的。否则我会另寻他处。

除非您启用了气球驱动程序(然后您会看到它的用法),否则这不是问题。

相关内容