0

如何识别默认应用程序池中使用大量内存的 Web 应用程序?

编辑 我的应用程序池包含许多应用程序,我无法分离或停止它们,我能否知道我的多应用程序应用程序池中的某些特定应用程序使用了哪些资源?

4

3 回答 3

1

您可以使用性能监视器,打开它,然后单击“添加计数器”,然后选择“Asp.Net 应用程序”或“ASP.Net 应用程序 vx.xxxxx”,然后选择您的计数器。

于 2012-05-23T19:17:39.123 回答
1

认为在 IIS 中,如果您有多个 Web 应用程序共享 1 个应用程序池,则 w3wp.exe 进程会将每个网站隔离到自己的 AppDomain 中。如果您使用的是 .NET 4,看起来每个 AppDomain 都可以读取一些性能指标。

这意味着您可以在应用程序中添加一些代码,这些代码会转储出它们自己的 AppDomain 的统计信息,然后您可以对其进行汇总和报告。

我自己没有尝试过,但似乎它可能会有所帮助......


这样做的一个非常简单的形式可能是在你的Application_Start()方法中,设置AppDomain.MonitoringIsEnabled = true;

然后有一个“stats.aspx”页面将AppDomain.CurrentDomain.MonitoringTotalProcessorTime任何其他统计信息转储到标签。

于 2012-05-23T19:22:30.123 回答
1

对于运行多个应用程序池的 Web 服务器,我过去也需要这样做。根据这篇文章:“如果您需要确定哪个应用程序池与特定 w3wp.exe 进程相关联,请打开管理命令提示符,切换到 %windir%\System32\inetsrv 文件夹(cd %windir%\System32\inetsrv ) 并运行 appcmd list wp。这将在引号中显示 w3wp.exe 进程的进程标识符 (PID)。您可以将该 PID 与任务管理器中可用的 PID 匹配。

这正是我所做的。

于 2012-05-23T18:14:58.247 回答