哪些请求会导致w3wp进程大幅增长?

时间:2009-10-22 23:42:17

标签: memory multithreading request w3wp

在生产环境中,如何发现哪些Asp.Net http请求,无论是aspx还是asmx或自定义,都会导致w3wp.exe进程中的内存压力最大? 我不是指内存泄漏。这是一个很好的健康应用程序,很好地处理它的所有对象。微软的世代GC确实可行。 但是,有些请求会导致w3wp进程大大增加其内存占用量,但仅限于请求的持续时间。

这只是一个SAAS应用程序的生产环境的成本效率和可扩展性的问题,以便定期向开发部门报告他们占用大部分内存的“页面”,以返回它所属的(内存)压力。 , 可以这么说。

似乎没有类似的东西:
HttpContext.Request.PeakPrivateBytes或.CurrentPrivateBytes

Session.PeakPrivateBytes

3 个答案:

答案 0 :(得分:2)

您可能希望使用性能监视器等工具来监视W3WP.exe进程的“进程\工作集”并将其记录到数据库中。然后,您可以将其与IIS服务器的HTTP日志相关联。

将Perfmon数据和HTTP日志写入SQL数据库都有帮助。然后,您可以使用T-SQL在观察到的内存压力周围按日期/时间显示请求的页面。使用DatePart函数根据需要将日期/时间四舍五入到所需的秒或分钟精度。

希望这有帮助。

谢谢, -Glenn

答案 1 :(得分:0)

如果您使用的是InProc会话状态,那么您的所有会话数据都会存储在w3wp的内存中,这可能是其增长的原因。

答案 2 :(得分:0)

我不担心。 可能是GC在请求期间发生,而CLR正在分配内存来移动事物。或者它可能是ASPNET附带的其他一些定期服务。

除非你准备用0,1,2 GC事件等的perf计数器分析进行探索,否则我不会担心解决这个“问题”。

这听起来不像是一个问题 - 只是一个好奇的事情。