Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 哪些请求导致w3wp进程显著增长?_Memory_Multithreading_Request_W3wp - Fatal编程技术网

Memory 哪些请求导致w3wp进程显著增长?

Memory 哪些请求导致w3wp进程显著增长?,memory,multithreading,request,w3wp,Memory,Multithreading,Request,W3wp,在生产环境中,如何发现哪些Asp.Net http请求(无论是aspx、asmx还是自定义)在w3wp.exe进程中造成的内存压力最大? 我不是说内存泄漏。它是一个很好的健康应用程序,可以很好地处理所有对象。微软的分代GC做得很好。 但是,有些请求会导致w3wp进程显著增加其内存占用,但仅在请求期间。 这仅仅是一个SAAS应用程序生产环境的成本效率和可扩展性问题,以便定期向开发部门报告其占用内存最多的“页面”,从而返回(内存)压力。 似乎没有这样的东西: HttpContext.Request

在生产环境中,如何发现哪些Asp.Net http请求(无论是aspx、asmx还是自定义)在w3wp.exe进程中造成的内存压力最大? 我不是说内存泄漏。它是一个很好的健康应用程序,可以很好地处理所有对象。微软的分代GC做得很好。 但是,有些请求会导致w3wp进程显著增加其内存占用,但仅在请求期间。 这仅仅是一个SAAS应用程序生产环境的成本效率和可扩展性问题,以便定期向开发部门报告其占用内存最多的“页面”,从而返回(内存)压力。

似乎没有这样的东西:
HttpContext.Request.PeakPrivateBytes或.currentpprivatebytes


Session.PeakPrivateBytes

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

我不担心它。 可能是请求过程中发生了GC,CLR正在分配内存来移动对象。或者它可能是其他一些定期服务的东西,伴随着ASPNET

除非您准备好对第0、1、2代GC事件等进行性能计数器分析,否则我不会担心解决这个“问题”


而且这听起来也不是什么问题,只是好奇而已。

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

让Perfmon数据和HTTP日志都写入SQL数据库会有所帮助。然后,您可以使用T-SQL按观察到的内存压力前后的日期/时间调出请求的页面。使用DatePart函数构建日期/时间,根据需要四舍五入到所需的精度(秒或分钟)

希望这有帮助

谢谢,
-格伦

对不起,没有工藤在这里。您的触发速度当然很快,但显然还没有理解问题的本质。确实如此,这是另一件我想测量的事情:每个会话的内存占用。所以我想要的是。。。HttpContext.Request.PeakPrivateBytes Session.PeakPrivateBytes Hanks Glenn,你的建议是我到目前为止得到的唯一严肃回应,我已经在多个MSDN论坛和ServerFault.com上发布了同样的问题。关于你的建议,这当然是可行的,但也需要做很多工作。我在关联数据时已经看到的一个问题是,IIS HTTP记录的是请求的结束时间,而不是开始时间。ThoIIS7提供高级日志记录。在SAAS和Web2.0(或者我们现在是3.0吗?)的世界中,似乎没有其他人对其Web应用程序的内存行为如此感兴趣,这确实让我感到惊讶。