如何在默认应用程序池中识别使用大量内存的Web应用程序?
修改 我的应用程序池包含许多应用程序,我无法分离或停止它们,我可以知道我的多应用程序应用程序池中的某些特定应用程序使用了哪些资源?
答案 0 :(得分:1)
我过去也需要为运行多个应用程序池的Web服务器执行此操作。根据{{3}}:“如果您需要确定哪个应用程序池与特定的w3wp.exe进程相关联,请打开管理命令提示符,切换到%windir%\ System32 \ inetsrv文件夹(cd%windir%\ System32 \ inetsrv)并运行appcmd list wp。这将在引号中显示w3wp.exe进程的进程标识符(PID)。您可以将该PID与任务管理器中可用的PID进行匹配。“
这正是我所做的。
答案 1 :(得分:1)
您可以使用性能监视器,打开它,然后单击“添加计数器”,然后选择“Asp.Net Applications”或“ASP.Net Apps vx.xxxxx”,然后选择您的计数器。
答案 2 :(得分:1)
我认为在IIS中,如果您有多个共享1个应用程序池的Web应用程序,w3wp.exe进程会将每个网站隔离到自己的AppDomain中。如果您使用的是.NET 4,则看起来有一些performance metrics that can be read per AppDomain.
这意味着您可以在应用程序中添加一些代码,这些代码会转储其自己的AppDomain的统计信息,然后您可以汇总并报告这些代码。
我自己没有试过,但似乎可能会有所帮助...
执行此操作的一种非常简单的形式可能只是在Application_Start()
方法中,设置AppDomain.MonitoringIsEnabled = true;
然后有一个“stats.aspx”页面将AppDomain.CurrentDomain.MonitoringTotalProcessorTime
和其他任何统计信息转储到标签上。