Iis w3wp从一天到另一天的高内存使用率

Iis w3wp从一天到另一天的高内存使用率,iis,memory,w3wp,dottrace,Iis,Memory,W3wp,Dottrace,我们有一个.NET webapi应用程序(带有服务autostart提供程序) 应用程序是由我们的buildserver构建的,输出被部署到多个服务器,对应用程序的请求通过负载平衡器路由 几个月来,该网站一直表现良好。几天前,我们注意到applicationpool在三分之二的服务器上使用的内存是前几天的三倍 现在使用比其他服务器更多内存的服务器正在这样做,即使我们重新设置、重新启动服务器等。应用程序池在启动后立即分配的内存是其他服务器的3倍 现在来看看那些超级怪异的东西 为了找出内存中的内容,

我们有一个.NET webapi应用程序(带有服务autostart提供程序)

应用程序是由我们的buildserver构建的,输出被部署到多个服务器,对应用程序的请求通过负载平衡器路由

几个月来,该网站一直表现良好。几天前,我们注意到applicationpool在三分之二的服务器上使用的内存是前几天的三倍

现在使用比其他服务器更多内存的服务器正在这样做,即使我们重新设置、重新启动服务器等。应用程序池在启动后立即分配的内存是其他服务器的3倍

现在来看看那些超级怪异的东西

为了找出内存中的内容,我将dotTrace探查器(远程,使用remoteagent.exe)“附加”到其中一台服务器上。该池似乎在循环使用,一旦启动,它就不再分配3倍的内存(因此内存快照是无用的)。我从辅助进程中“卸载”了探查器,并注意到应用程序池不再使用3倍内存。我重新启动了服务器,但它仍然没有使用3倍的内存

所以。。。似乎只是将探查器连接到w3wp进程,以持久的方式解决了我的问题,因为在iisreset和重新启动后,它仍然在“低内存使用率”下工作

在服务器#2上尝试了相同的过程,遇到了相同的问题,它也解决了我的问题

看起来dotTrace对我的工作流程起到了神奇的作用:)


有人能找出原因吗?我有更多的服务器(在其他环境中)出现同样的问题,但我想知道这个问题的根本原因。

简短回答: 我发现原因是Microsoft Monitoring Agent的探查器与我的w3wp进程挂钩

长答案:

事件日志中的详细信息

.NET Runtime version 4.0.30319.34014 - The profiler was loaded successfully.  Profiler CLSID: '{AD5651A8-B5C8-46CA-A11B-E82AEC2B8E78}'.  Process ID (decimal): xxxx.  Message ID: [0x2507].
使我得出结论,另一个探查器连接到w3wp。在注册表中搜索CLSID显然与监视代理有关。可以通过首先浏览windows注册表来禁用探查器:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WAS
和改变:

Environment = COR_PROFILER={AD5651A8-B5C8-46ca-A11B-E82AEC2B8E78} Cor_Enable_Profiling=1
致:

我想有比直接更改注册表更好的禁用评测方法(可能是卸载Microsoft Monitoring Agent?)

…探查器导致3倍内存消耗的原因仍然是个谜

Environment = COR_PROFILER={AD5651A8-B5C8-46ca-A11B-E82AEC2B8E78} Cor_Enable_Profiling=0