监视IIS实时 – 内存过度增加,直到内存不足错误

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

现在我的问题是,有什么工具来实时监视这个IIS进程中发生了什么。 堆栈跟踪,可能是哪些对象存储在RAM内,等等

服务器正在Windows 2003 R2上运行

顺便说一句:我听到人们的想法…谷歌没有帮助我很多,知识就在这里!

提前致谢!

我不是一个开发人员,所以我不能告诉你什么你可以在你的应用程序。 但是,从系统:

  1. 确保这个应用程序有自己的应用程序池,以便您可以隔离它从其他进程中所做的事情。
  2. 作为一个缺口,也许configuration池在最大使用内存为2000 MB后回收。 这将是破坏性的,但比使用所有内存和locking更好。
  3. 在发生这种情况时从Sysinternal(Microsoft)运行进程资源pipe理器。 这会告诉你很多有关进程的信息,包括打开的文件句柄,GDI对象等
  4. 运行性能监视器并查看.NET CLR,Active Server Pages和ASP.NET性能对象(如适用于您的应用程序),以查看是否可以了解有什么不好之处。

这不完全是实时的,但是当它检测到发生内存泄漏时,您可以使用IISdebugging诊断工具生成用户转储。

然后,您可以将该用户转储到DebugDiag中,以便在转储中生成内存使用情况报告。