在生产环境中,如何发现哪些 Asp.Net http 请求(无论是 aspx、asmx 还是 custom)在 w3wp.exe 进程中造成了最大的内存压力?我的意思不是这里的内存泄漏。这是一个很好的健康应用程序,可以很好地处理它的所有对象。微软的世代 GC 运行良好。然而,一些请求会导致 w3wp 进程显着增加其内存占用,但仅在请求期间。
从系统管理员对基于 .Net 的 SAAS 应用程序的可扩展性和成本效率的角度来看,我认为我的问题是完全合理的。它适合这一系列类似的问题:
- 哪些非缓存页面响应是可缓存的?
- 哪些页面消耗的cpu最多?
- 哪些页面造成的数据库负载最多?
- 哪些页面的服务时间最长?
- 哪些页面消耗最多的工作进程内存?
其中一些很容易回答,即 IIS 日志(带有 logparser)给出了一个快速的答案,其中需要的时间最长。并且有很多工具可以分析可缓存性。
我想定期向开发部门报告他们最占用内存的 aspx/ascx/asmx 页面,以便将(内存)压力归还给它所属的地方,可以这么说。
似乎没有类似的东西:
HttpContext.Request.PeakPrivateBytes 或 .CurrentPrivateBytes 或 Session.PeakPrivateBytes
2美分一分钱...
请参阅有关高内存使用调试的优秀 MSDN 博客系列。