4

我有一个 Windows 服务,它跨多个线程运行框架的实现。每个正在运行的实例都有几个共同点,我需要跟踪它们,例如,处理的项目数量、上次处理项目的时间等。在此基础监控数据之上,我想在框架以允许实现动态添加自己的监控数据。

我以前使用过 PerformanceCounters,虽然它们提供了不错的功能,但我发现创建和维护它们的代码非常繁琐,并且加载了与实例相关的陷阱的可能性(即硬编码计数器实例名称、类别名称和计数器类型)。此外,我不确定是否可以在不编写大量代码的情况下提供简单的基本功能动态计数器创建。

有没有人使用 PerformanceCounters 实现过类似的东西?如果是这样,你会推荐它吗?如果没有,是否有人建议我可以轻松地将性能/健康监控数据写入不会引入 1)很多减速和 2)另一个故障点的介质?

谢谢,如有必要,我很乐意补充说明,因为我知道这有点含糊。

结论:

我最终实现了性能计数器。这有点像 PITA(呵呵),但我的老板真的很喜欢这个想法,现在我已经想通了,还不错。我希望通过一种更简单的方式来呈现分层数据,从而更容易配置一些东西。但这很好用,而且很难与内置界面争论。

4

2 回答 2

1

同意,将利用性能计数器的代码放在一起可能需要一些时间。但是,上次我这样做时,我将它全部封装在一个很好的可重用类中。它使我在整个代码库中使用性能计数器变得更加简单,并且摩擦最小。

最终结果对我来说非常值得,因为存在于 perf 计数器之上的工具(perfmon 是一大福音)。

于 2009-01-13T18:53:24.290 回答
0

您是否考虑过使用 Enterprise Library 中的 Instrumentation 类?不能说任何赞成/反对 EntLib 的东西,但它似乎越来越受欢迎,而且微软似乎还在继续投资它......

http://msdn.microsoft.com/en-us/library/dd203352.aspx

于 2009-01-21T22:08:58.670 回答