我有一个 Windows 服务,它跨多个线程运行框架的实现。每个正在运行的实例都有一些我需要跟踪的共同点,例如,处理的项目数量、上次处理项目的时间等。在此基础监控数据之上,我想在框架允许实现动态添加自己的监控数据。
我之前使用过 PerformanceCounters,虽然它们提供了不错的功能,但我发现创建和维护它们的代码非常麻烦,并且加载了与实例相关的陷阱的可能性(即,硬编码计数器实例名称、类别名称和计数器类型)。此外,我不确定是否可以提供简单的基本功能动态计数器创建,而无需编写大量代码。
有没有人使用 PerformanceCounters 实现过这样的东西?如果是这样,你会推荐它吗?如果没有,是否有人建议我可以轻松地向其中写入性能/运行状况监控数据的介质,而不会引入 1) 大量减速和 2) 另一个故障点?
谢谢,如果有必要,我很乐意添加说明,因为我知道这有点含糊不清。
结论:
我最终实现了性能计数器。这有点像 PITA(呵呵),但我的老板真的很喜欢这个主意,现在我已经想通了,还不错。我希望有一些更容易配置的东西,用更简单的方式来呈现分层数据。但这很好用,并且很难与内置界面争论。
最佳答案
同意,将利用性能计数器的代码放在一起可能需要一些时间。但是,上次我这样做时,我将其全部封装在一个不错的可重用类中。它使我在整个代码库中使用性能计数器变得更加简单,并且摩擦最小。
考虑到存在于 perf 计数器之上的工具(perfmon 是一个很大的福音),最终结果对我来说非常值得。
关于.net - 到 PerformanceCounter 还是编写自定义监控?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/440232/