我在 WIN SERVER 2008 R2 Enterprise 64 位 2.53 Ghz (2 CPU) 和 8GB RAM 的单个生产服务器(虚拟)上托管 7 个网站。
Web 服务器是 IIS 7,所有网站都带有 .NET Framework 4.0 应用程序池。
我当前的内存使用量约为 8GB 中的 4.16 GB,w3wp.exe 是消耗大部分内存使用量(此时约 1.6 GB)的进程,其次是 sqlservr.exe(1.5 GB)使用量。
我想做的是知道 7 个网站中哪个网站占用的内存最多,以便我查看。
我已经尝试过 Process Explorer 和 Resource monitor,但它只能显示 w3wp.exe 占用了多少 rem,而不能显示单个网站的使用情况。
有没有一种方法可以确定内存占用者的位置?
最佳答案
您可以使用 Microsoft 的 Debug Diag 进行内存转储工具。
基本流程是:
- 启动 DebugDiag
- 取消向导
- 点击“进程”标签
- 选择 w3wp
- 右键单击并选择“创建完整转储”
- 暗自窃笑,因为你说的是“倾倒”
- 转储完成后(再次窃笑),单击“高级分析”选项卡
- 使用 2 个 Memory Pressure Analyzer 脚本查看您是否可以看到哪些对象正在使用大量内存。
我建议结合 Uri May 的回答来执行此操作,否则您可能会浪费很多时间。
关于asp.net - 在 ASP.NET Web App 中查找内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12669876/