实时监控IIS-内存过度增加直至出现内存不足错误

实时监控IIS-内存过度增加直至出现内存不足错误

我们有一个 Web 应用程序与另一台(数据库)服务器上的 SQL Web 数据库通信。某些查询会使 Web 服务器上的内存过度增加,直到我们收到内存不足错误。例如,RAM 使用量从 250MB 增加到 2300MB,而这全都是由 w3wp(是的,IIS)进程引起的。

现在我的问题是,有什么工具可以监控即时的此 IIS 进程内部发生了什么。堆栈跟踪,可能哪些对象存储在 RAM 中,等等

服务器运行的是 Windows 2003 R2

顺便说一句:我听到人们在想......谷歌并没有给我太多帮助,知识就在这里!

提前致谢!

答案1

我不是开发人员,所以我无法告诉您可以在应用程序中使用什么。但是,从系统中:

  1. 确保此应用程序具有自己的应用程序池,以便您可以将其执行的操作与任何其他进程隔离。
  2. 作为权宜之计,也许可以将池配置为在最大使用内存为 2000 MB 后进行回收。这会造成破坏,但比使用所有 RAM 并锁定要好。
  3. 在此过程中,从 Sysinternal (Microsoft) 运行 Process Explorer。这将告诉您有关该进程的大量信息,包括打开的文件句柄、GDI 对象等。
  4. 运行性能监视器并查看 .NET CLR、Active Server Pages 和 ASP.NET 性能对象(适用于您的应用程序),看看是否可以了解导致问题的原因。

答案2

这不是实时的,但你可以使用IIS 调试诊断当检测到发生内存泄漏时,工具会生成用户转储。

然后您可以将该用户转储放入调试诊断让它在转储中生成内存使用情况的报告。

相关内容