我遇到了一个严重的内存问题,这导致服务器出现严重问题。
机器上有 Windows 2003 x86、SQL Server 2005 和 IIS,上面运行着许多应用程序。8 处理器系统,4GB RAM。最近出现的主要问题是内存使用率始终很高,大约 3.8GB。重新启动后一段时间,内存使用率开始增长到 3.8 - 4GB,然后一些应用程序停止响应请求,sql server 查询执行速度变慢,唯一能做的事情就是重新启动,这很糟糕。
当我查看任务管理器中的进程时,消耗的内存总量几乎不超过 1Gb。当我打开 vmmap 监视器时,它显示了相同的内容。
SQL Server 最大内存为 2Gb。页面文件为 2 - 4Gb。
您有什么想法,如何才能找出是什么消耗了这么多内存?
答案1
答案2
如果不是 IIS,那我会非常惊讶。您在那里运行了哪些应用程序?
答案3
查看性能计数器进程类别。此类别为服务器中的每个进程提供一个实例,各个计数器将显示每个进程分配的内存、虚拟地址空间大小和工作集大小。一旦您找到哪个如果进程消耗了所有内存(假设内存是在用户模式下消耗的),那么您可以针对性地进行调查。IIS/ASP 和 SQL 都是严重消耗内存的进程,但它们之间的故障排除和调查截然不同。因此,在开始盲目更改设置之前,首先找出是哪一个非常重要。
答案4
首先确保任务管理器显示所有用户的进程。任务管理器中显示的内存应该非常接近框中的内存使用率。这将告诉您哪些进程正在消耗内存。很可能是 IIS 正在消耗内存,根据我的评论,您应该将应用程序池的数量减少到所需的数量(每个身份 1 个,每个框架版本 1 个)