【发布时间】:2012-07-15 07:24:02
【问题描述】:
我想衡量我的商务舱在 Web 服务中的性能。如何通过编码做到这一点?
我想知道我的业务类在执行其操作时消耗了多少 CPU,以及如果 Web 服务同时获得多个服务调用,性能有何变化。
我不想衡量我的网络服务的性能;我只想知道我的商务舱表现如何。
我的想法:
在阅读了一些博客之后,我决定编写一些代码来创建PerformanceCounter,如下所示。通过该代码,我可以在一个 for 循环中创建多个线程。每个线程都会调用我的类。并且在同一个for 循环中,我将在计数器实例上调用NextValue() 方法。
System.Diagnostics.PerformanceCounter CpuCounter = new System.Diagnostics.PerformanceCounter();
CpuCounter.CategoryName = "Process";
CpuCounter.CounterName = "% Processor Time";
CpuCounter.InstanceName = Process.GetCurrentProcess().ProcessName;
问题:
- 这种方法正确吗?
- 我应该使用“进程”类别还是“处理器”类别?
- 如何获取性能数据以从中创建一些报告?例如使用 100 个并发线程时,CPU 使用率为 70%,使用 200 个线程时,CPU 使用率高达 90%,等等。
- 我的业务逻辑很快就结束了。另一方面,
NextValue()方法在 this 博客中提到的一秒间隔后给出正确的值。我该如何处理? - 有时,
NextValue()方法给出的值高于 100。这是否意味着 CPU 使用率超过 100%? (我认为,这个计数器的值不应该被解释为 CPU 的使用百分比。我说的对吗?)
注意:我使用的是 Windows 7 Premium 和 Intel Core i5 处理器。这是我第一次使用性能计数器。所以有些问题可能很傻。
【问题讨论】:
标签: c# .net performancecounter performance-testing