使用perfmon监视特定的ASP.NET webapp跨工作进程重新启动,IIS重新启动等?

我有一些perfmon性能计数器,我想跟踪一个特定的ASP.NET应用程序在一段延长的时间,比如一周或一个月。 问题在于,perfmon计数器通常是以stream程为中心的,而不是以ASP.NET应用程序为中心的,或者以AppPool为中心的。 所以,例如,我可以绑定柜台

.NET CLR Memory performance counters\# Gen 0 Collections 

到一个特定的IIS工作进程(这令人讨厌的是,通过w3wp,w3wp#1,w3wp#2来识别 – 但为了解决这个问题,请参阅如何将'w3wp'进程名称转换为PID或用户名? w3wp#29) ),但我似乎无法将其绑定到“正在运行ASP.NET Application X或AppPool Y的任何进程,现在或未来”。这意味着,如果IIS回收工作进程,或者如果有人重新启动IIS,或重新启动计算机,那么我的perfmon日志不能指望跟踪相同的Web应用程序。

是否有一些技巧,即使工作进程(例如w3wp.exe)重新启动,机器重新启动等,使用perfmon来监视给定的webapp?

我在这里find了几个可能的答案,但是他们并不觉得100%正确(尽pipe我会解释为什么他们可能是正确的):

  • 从如何设置Perfmon / Logman获取仅用于特定IIS进程的线程性能计数器? 我得到的印象是,也许我可以logging机器上所有单独的.NET应用程序的所有 “#Gen 0 Collections”计数,然后在事后抛出那些不相关的。 但是,首先我不知道如何logging所有应用程序的计数(注意:关键是,您需要“所有的应用程序,无论它们何时启动”,而不是“当您设置perfmon任务时启动的所有应用程序“),其次,我不知道如何追溯地告诉日志中的哪些数据与您的特定Web应用程序相对应
  • 从如何使Perfmon自动跟踪IIS的多个站点相同的过程? 我得到的印象是,这可能可以通过一个脚本来解决,该脚本根据iisapp.vbs的输出,每隔一分钟左右继续调整perfmon计数器设置。 但是,这似乎不是一个很干净的方式来做到这一点。