【发布时间】:2011-11-21 18:24:49
【问题描述】:
我正在为 Windows 2008 和 IIS 7 上正在运行的网站创建性能计数器,因此进程的形式为(即第一个应用程序池的 W3WP、第二个应用程序池的 W3WP#1、第二个应用程序池的 W3WP#2第三个应用程序池等)
问题是:如果应用程序池被回收,或者机器重新启动,会发生什么?相同的进程实例会映射到相同的应用程序池还是会发生变化? (即将 w3wp 分配给第一个应用程序池,w3wp#1 分配给第二个应用程序池,w3wp#2 分配给第三个应用程序池等)
而且,如果池-进程关联会发生变化,我们如何在每次系统回收时都不必重新配置性能计数器的情况下继续监控同一个应用程序池?
澄清一下: 我指的性能计数器不是 ASP.Net 计数器,它们具有与计数器关联的应用程序池名称。
在这里,我指的是像“Process”这样的计数器,以及像“.Net CLR Memory”和“.Net CLR Exception”这样的.Net框架计数器,它们不使用应用程序池,它们使用进程名称,这里是一个示例“\Process(w3wp)\Thread Count”是一个性能计数器,它告诉进程 w3wp 中的线程数。此进程是其中一个应用程序池的工作进程。 "\Process(w3wp#1)\Thread Count" 做同样的事情,但对于另一个池的工作进程。
问题是:如果池回收或机器回收,w3wp和w3wp#1是否代表相同的池,如果不是,我们如何保证我们继续监控我们想要的池而无需重新配置性能计数器?
【问题讨论】:
-
到目前为止我发现的唯一一件事是,您可以将进程 ID 附加为 W3WP#5212 之类的东西,但是,这仍然不能解决问题。
-
为什么不遵循 IIS 使用的技术?
-
约翰什么技术?你能详细说明一下吗?
-
查看性能计数器的命名方式。他们使用不随时间变化的标识符。或者您可以通过应用程序池名称来命名它们。
标签: windows performance iis process performancecounter