我们有一个 Web 应用程序与另一台(数据库)服务器上的 SQL Web 数据库通信。某些查询会使 Web 服务器上的内存过度增加,直到我们收到内存不足错误。例如,RAM 使用量从 250MB 增加到 2300MB,而这全都是由 w3wp(是的,IIS)进程引起的。
现在我的问题是,有什么工具可以监控即时的此 IIS 进程内部发生了什么。堆栈跟踪,可能哪些对象存储在 RAM 中,等等
服务器运行的是 Windows 2003 R2
顺便说一句:我听到人们在想......谷歌并没有给我太多帮助,知识就在这里!
提前致谢!
答案1
我不是开发人员,所以我无法告诉您可以在应用程序中使用什么。但是,从系统中:
- 确保此应用程序具有自己的应用程序池,以便您可以将其执行的操作与任何其他进程隔离。
- 作为权宜之计,也许可以将池配置为在最大使用内存为 2000 MB 后进行回收。这会造成破坏,但比使用所有 RAM 并锁定要好。
- 在此过程中,从 Sysinternal (Microsoft) 运行 Process Explorer。这将告诉您有关该进程的大量信息,包括打开的文件句柄、GDI 对象等。
- 运行性能监视器并查看 .NET CLR、Active Server Pages 和 ASP.NET 性能对象(适用于您的应用程序),看看是否可以了解导致问题的原因。