我想衡量我的商务舱在 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()
方法在一秒钟的间隔后给出正确的值,如本博客所述。我该如何处理? - 有时,
NextValue()
方法给出的值超过 100。这是否意味着 CPU 使用率超过 100%?(我认为,这个计数器的值不应该被解释为 CPU 的使用百分比。我正确吗?)
注意:我使用的是 Windows 7 Premium 和 Intel Core i5 处理器。这是我第一次使用性能计数器。所以有些问题可能很愚蠢。