1

有人可以给我一步一步的说明或以正确的顺序指向正确的参考吗

这样我就可以确定这个问题的根本原因?

4

3 回答 3

2

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

如果 w3wp 在本地运行,可以在任务管理器中右键单击该进程,选择调试,在 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

于 2008-10-08T20:23:14.033 回答
1

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

欲了解更多信息,请阅读

于 2008-10-08T20:25:48.523 回答
0

w3wp.exe 会因多种原因消耗大量内存。

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

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

随着时间的推移,内存泄漏会导致内存使用量逐渐增加。

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

  • 代码审查(特别关注静态对象和事件注册/注销)
  • 分析:分析内存泄漏有时可能是一项艰巨的任务。确保在分析和检查长寿命对象时收集一段时间/请求的数据,并检查以确保它们的长寿命有效。
于 2008-10-09T09:45:10.047 回答