ASP.NET:w3wp正在使用大量内存,而且进程没有响应

时间:2008-10-08 20:20:35

标签: asp.net .net debugging w3wp

有人可以给我一步一步的指示,或者按照正确的顺序指出正确的参考资料

以便我可以确定此问题的根本原因?

3 个答案:

答案 0 :(得分:2)

您可以获取进程的内存转储并查看WinDbg。它至少会给你一个例外列表和线程的当前状态。这样做会回收这个过程。也可以从visual studio以远程调试模式连接到QA型机器。但是我没有这样做,它会在你调试时挂起所有其他请求。

如果w3wp在本地运行,您可以右键单击任务管理器中的进程并选择debug以查看WinDbg。 否则,您需要在生产/测试计算机上使用类似Debug Diag的内容来创建完整的用户转储。请参阅:http://msdnrss.thecoderblogs.com/2008/05/21/debugdiag-11-or-windbg-which-one-should-i-use-and-how-do-i-gather-memory-dumps/

我在二月份做了所有这些,并且从那以后就不需要了。由于为WinDbg获取符号并为应该存储的位置配置环境变量等,完整的一步一步实际上有点痛苦。

有关为ASP.NET检查设置WinDbg的信息,请查看以下文章: http://support.microsoft.com/kb/892277

答案 1 :(得分:1)

w3wp.exe是与ISS中的应用程序池关联的进程。如果您有多个应用程序池,则将运行多个w3wp.exe实例。

有关详细信息,请参阅this

答案 2 :(得分:0)

由于各种原因,w3wp.exe会消耗大量内存。

  • 处理大量请求
  • 大量数据吞吐量(例如媒体处理)
  • 内存泄漏
  • 上述任意组合。

如果您怀疑前两个是问题,则需要扩展系统(添加额外的服务器等)。

内存泄漏会导致内存使用量逐渐增加。

如果您怀疑内存泄漏,可以考虑采取以下措施。

  • 代码审查(特别关注静态对象和事件注册/取消注册)
  • 分析:内存泄漏的分析有时可能是一项艰巨的任务。确保您在分析时收集一段时间/请求的数据,并检查长寿命对象并检查以确保其长寿命有效。
相关问题