.NET应用程序和性能监控

4

我有一个关于如何监测我的基于Windows的应用程序(控制台应用程序、Win Forms应用程序或服务)性能的问题。我正在寻找有关如何正确高效地监测(CPU利用率、内存利用率、进程等)在.NET环境下开发的应用程序性能的信息。代码中是否需要编写触发WMI可用性的程序?是否有一种特定的方法来创建与您创建的应用程序直接相关的性能计数器?我希望尽可能详细地了解正在运行的应用程序。

如果需要在应用程序上编写代码以调用WMI监视器,请列举示例。

此外,是否有任何预先构建的(开源的)应用程序性能测试工具值得推荐?


我已经编辑了你的标题。请参考“问题的标题应该包含“标签”吗?”,在那里达成共识是“不应该”。 - John Saunders
使用任务管理器、perfmon或任何你用来监视本地Windows应用程序的工具有什么问题? - John Saunders
你应该提出一个关于性能测试的单独问题。这与性能监测非常不同。 - John Saunders
3个回答

4
一个了解应用程序性能的好方法是添加ETW仪器。这样可以在应用程序运行时监视发生的情况并收集时间。如果你为应用程序进行仪器化,你可以回答有关应用程序内各种操作完成所需时间的问题。
.NET运行时和Windows堆栈中的大多数其他组件也利用ETW,因此您还可以获得有关内存使用、等待、I/O等详细信息。
ETW可通过EventSource类用于托管应用程序。
您可以使用Windows Performance ToolkitPerfView记录和分析事件。

这对CPU或内存利用率有任何帮助吗? - millimoose
大多数分析工具都可以获取CPU利用率。添加仪表可以帮助您将其映射到应用程序的领域。 - Brian Rasmussen

2

1
你可以打开性能监视器,并已经看到所有.Net(和Windows)开箱即用的性能计数器。这包括内存使用、CPU利用率、锁竞争、异常等等。
你可以添加自己的特定性能计数器,并使用PerformanceCounter以完全相同的方式收集它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接