c# - 使用性能计数器跟踪 Windows 服务

标签 c# performancecounter

我正在使用一个由多个应用程序和服务组成的系统,几乎所有应用程序和服务都使用 SQL 数据库。

Windows 服务在不同时间做不同的事情,我想跟踪它们。这意味着在某些已部署的系统上,我们看到机器的 CPU 运行过高,我们看到 sql 进程运行过高,但我们无法确定是哪个服务对此负责。

我想知道性能计数器是否适合这项工作。

基本上,我希望能够在某个时刻看到哪个服务被唤醒并正在处理某些事情。

在我看来,我最终可以得到一个 perfcounter,每个服务的值只有 0 或 1,以显示它是否在做某事,但这看起来不像是正常的perfcounters 的用法。

性能计数器是否合适?

您认为我应该以不同的方式跟踪它吗?

最佳答案

如果您的监控框架/方法已经以监控性能计数器为中心,那么这是一种可行的方法。

就我个人而言,我发现需要更详细的检测才能真正了解我的服务中发生的事情(尽管这可能与我的服务的性质有关)。

我使用 .NET Logging Framework因为它很简单,可以写入多个目标,包括日志文件、事件日志和 TCP 套接字(我有一个简单的监视器,可以监听每个应用程序服务器的日志套接字,并实时向我显示正在发生的事情)。

关于c# - 使用性能计数器跟踪 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1418744/

相关文章:

c# - 想知道在 HttpBeginRequest 中等待的请求的确切值

c# - 是否有 WCF 服务请求队列性能计数器?

c# - 性能计数器 - 每分钟速率类型?

.net - 要添加哪些计数器 (PerfMon) 来查找 C# WCF Web 服务中的性能问题?

c# - MVC EntityFramework 代码优先迁移 - Seed() 因 AmbiguousMatchException 而失败?

c# - 如何在代码中触发点击事件

c# - Linq 到 SQL : how to handle database changes

c# - 在 C# 中将 string.Empty 转换为(通用)T?

c# - WPF ClickOnce 遗漏引用

linux - perf 在用户和内核级别测量事件的选项是什么意思?