我希望有人能帮帮忙。我们有一台具有 16GB RAM 的Windows Server 2008 R2机器,它的所有可用内存不断被某些东西吃掉。任务管理器或资源监视器中没有任何内容显示任何使用超过 300MB 内存的进程......但服务器上的内存使用量为 15.7GB。
唯一运行的是SQL Server 2008和IIS7.5(带有 ASP.Net)。
注意:重新启动后的 RAM 使用率从低开始逐渐上升。大约一周后,我们在这种情况下不断发现自己。
我怎样才能发现是什么吞噬了我们所有的记忆?:(
这是 64 位服务器 - 您是否启用了内存本地策略中的锁定页面?SQL 可能会占用您的剩余内存 如果您查看 perfmon 计数器,您将看到内存分配
这是一篇深入解释它的文章
您还可以在 SQL 中查看计数器
快速测试:重新启动 SQL Server。
另一个快速测试:重新启动 IIS。
您将确定其中一个是否是罪魁祸首,或者您是否必须寻找其他地方。
使用RamMap查看内存的去向可能会有所帮助。
您实际上是否遇到任何与内存相关的问题?
内存使用量是否曾经高于实际安装的内存,还是只是填满并留在那里?
如果内存刚刚填满但您没有遇到任何问题,那么它只是缓存在完成它的工作;如果您真正需要它,内存将自动释放。
如果内存使用量超过物理限制并且服务器停止运行,那么您遇到了一些内存泄漏,并且绝对应该对其进行调试。
关于“缓存”主题的一些有趣的文章:
http://blogs.msdn.com/ntdebugging/archive/2007/11/27/too-much-cache.aspx
http://blogs.msdn.com/ntdebugging/archive/2007/10/10/the-memory -shell-game.aspx
http://blogs.msdn.com/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx
您是否按照其他线程中的某人的建议检查了 Perfmon(特别是 SQL 计数器) ?
第一件事是,如前所述,修补它,看看是否能解决问题。
其次,如果这不起作用,请使用Process Explorer更好地了解您的内存使用情况。转到 View 菜单,然后选择 Columns、Process Memory 并检查 Private Bytes、Virtual Size 和 Working Set Size 选项。看看这是否表明这里应该归咎于什么。
然后,一种激进的方法是尝试停止服务。例如,如果您的应用程序池和网络花园配置错误(太多),那么 IIS 可能是一个总内存猪,因此这是一个候选者。
祝你好运!