2012-08-08 2 views
2

2 개의 성능 카운터 값을 업데이트하는 WCF 서비스가 있습니다. 첫 번째는 NumberOfItems64로 정의되고 두 번째는 RateOfCountsPerSecond64로 정의됩니다. 이 값을 업데이트하면 (초당 여러 번) perfmon은 첫 번째 카운터에 대해 올바른 값을 예상대로 표시하지만 항상 두 번째 카운터의 값은 0이라고 표시합니다. 코드를 디버깅 할 때 예상대로 두 번째 카운터의 RawValue 속성은 다음 RateOfCountsPerSecond64 형식의 성능 카운터는 항상 0 값을 갖습니다.

가 카운터를 만들 내 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에서이 질문을 발견했습니다. 그쪽으로 내 광경과 꽤 비슷해 보입니다 : Counter of type RateOfCountsPerSecond32 always shows 0하지만 문제가 해결되지 않습니다.

아이디어가 있으십니까?

답변

1

내 컴퓨터를 다시 시작하면 코드가 예상대로 작동합니다 ... 이상한 !!!!!!!

0

나는 C#에서 같은 문제가 발생했습니다. 또한 재부팅으로 문제가 해결되었음을 알았습니다.

이 같은 블록에 카운터를 초기화, 날 위해 일하는 것 같았다 또 다른 한가지 :

counter.BeginInit(); 
counter.RawValue = 0; 
counter.EndInit(); 
C# 코드의

,하지만 난 PowerShell을 추측하고있어이 기능의 해당 세트가 있습니다.