Web サービスでビジネス クラスのパフォーマンスを測定したいと考えています。コーディングを通じてどのように行うことができますか?
ビジネス クラスが操作を実行するために消費する CPU の量と、Web サービスが複数の同時サービス呼び出しを取得した場合にパフォーマンスがどのように変化するかを知りたいです。
Web サービスのパフォーマンスを測定したくありません。ビジネスクラスのパフォーマンスを知りたいだけです。
私の考え:
PerformanceCounter
いくつかのブログを読んだ後、以下に示すように を作成するコードを書くことにしました。for
そのコードから、1 つのループで複数のスレッドを作成できます。各スレッドは私のクラスを呼び出します。同じ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 のスレッドでは最大 90% になります。
- 私のビジネス ロジックはすぐに終了します。一方、メソッドは、このブログ
NextValue()
で述べたように、1 秒間隔で正しい値を返します。どうすればこれを処理できますか? - メソッドが 100 を超える値を返すことがあり
NextValue()
ます。これは、CPU 使用率が 100% を超えているということですか? (このカウンターの値は、CPU の使用率として解釈されるべきではないと思います。私は正しいですか?)
注: Windows 7 プレミアムと Intel Core i5 プロセッサを使用しています。パフォーマンス カウンターを使用するのはこれが初めてです。したがって、いくつかの質問はばかげているかもしれません。