我们目前在生产中遇到一个问题,数据中心报告称我们的服务器内存利用率已达到 90% 以上。这些服务器有 2GB 的 RAM。数据中心人员报告称执行程序进程的专用字节数为 277,020K(工作集 319,824K)。到目前为止,该进程是系统中内存消耗最大的进程,但考虑到总 RAM 量以及没有其他接近该大小的进程在运行,这个大小并不算大。
如果我们把服务器上的所有工作集(所有进程)加起来,我们得到的只有 473,472K。我们知道这不是确定内存使用量的正确方法,因为它包括共享内存,这可能是“重复计算”,但我们正试图向数据中心人员证明这一点。这意味着有不到 1.5GB 的内存未被考虑在内。
我的问题是:有人见过这样的事情吗?有没有更好的方法来解决这个问题?是否因为我们的服务器在虚拟机中运行,所以内存无法正确报告?任何见解或建议都将不胜感激。
这是我们的设置
- 虚拟机主机:VMWare ESX Server。
- 客户机操作系统:Windows Server 2008 Standard 32 位 Service Pack 1。
- 客户操作系统内存:2GB
- 应用程序:运行单个 ASP.NET 应用程序的 Web 服务器。
答案1
也许你应该调整 IIS 使用的内存应用程序池? 或者将其配置为更频繁地回收?
答案2
Jeronimo,如果您的数据中心管理员正在检查 VMWare 中报告的内存利用率,由于 Tony Roth 提到的预取行为,内存利用率似乎总是接近最大值。VMWare Tools 看不到差异。
答案3
我认为 VMware 使用额外的内存来处理虚拟机。我以前也遇到过这种情况,最后我为每个虚拟机分配了更多内存。此外,如果您将 VM Tools 安装到客户机,它有助于提高这些内存的利用率。