2 つのパフォーマンス カウンターの値を更新する WCF サービスがあります。1 つ目は NumberOfItems64 として定義され、2 つ目は RateOfCountsPerSecond64 として定義されます。それらの値を更新すると (1 秒間に数回これを行います)、perfmon は最初のカウンターの正しい値を期待どおりに表示しますが、2 番目のカウンターの値は常に 0 であると表示します。コードをデバッグすると、 2 番目のカウンターの RawValue プロパティは期待どおりに更新されます...
カウンターを作成するための PowerShell コードは次のとおりです。
$categoryName = "My category"
$exists = [System.Diagnostics.PerformanceCounterCategory]::Exists($categoryName)
if ($exists)
{
[System.Diagnostics.PerformanceCounterCategory]::Delete($categoryName)
}
$counters = new-object System.Diagnostics.CounterCreationDataCollection
$counter = new-object System.Diagnostics.CounterCreationData
$counter.CounterType = [System.Diagnostics.PerformanceCounterType]::NumberOfItems64
$counter.CounterName = "# ops"
$counters.Add($counter)
$counter = new-object System.Diagnostics.CounterCreationData
$counter.CounterType = [System.Diagnostics.PerformanceCounterType]::RateOfCountsPerSecond64
$counter.CounterName = "# ops/sec"
$counters.Add($counter)
[System.Diagnostics.PerformanceCounterCategory]::Create($categoryName, $categoryName, [System.Diagnostics.PerformanceCounterCategoryType]::MultiInstance, $counters)
カウンターの値を更新するコードは次のとおりです。
long value = GetValue();
counter1.IncrementBy(value);
counter2.IncrementBy(value);
StackOverflow でこの質問を見つけました。これは私のものとかなり似ています。RateOfCountsPerSecond32 型のカウンターは常に 0 を示しますが、問題は解決しません。
何か案が ?