この奇妙な問題に遭遇したとき、特定のパフォーマンスカウンターが運用サーバーで更新されない理由を理解しようとしていました-RawValue
読み取り専用ではない場合、カウンターは異なる値を返すようです. 読み取り専用の場合は常にゼロで、読み取り専用でない場合は異なる値を示します。
これを示す私のPowerShellセッションは次のとおりです。
PS C:\Users\doron> $counter = new-object Diagnostics.PerformanceCounter
PS C:\Users\doron> $counter.CategoryName = "My category"
PS C:\Users\doron> $counter.CounterName = "My counter name"
PS C:\Users\doron> $counter.ReadOnly = 1
PS C:\Users\doron> $counter
CategoryName : My category
CounterHelp : My counter name
CounterName : My counter name
CounterType : NumberOfItems64
InstanceLifetime : Global
InstanceName :
ReadOnly : True
MachineName : .
RawValue : 0
Site :
Container :
PS C:\Users\doron> $counter.ReadOnly = 0
PS C:\Users\doron> $counter
CategoryName : My category
CounterHelp : My counter name
CounterName : My counter name
CounterType : NumberOfItems64
InstanceLifetime : Global
InstanceName :
ReadOnly : False
MachineName : .
RawValue : 20
Site :
Container :
PS C:\Users\doron> $counter.ReadOnly = 1
PS C:\Users\doron> $counter
CategoryName : My category
CounterHelp : My counter name
CounterName : My counter name
CounterType : NumberOfItems64
InstanceLifetime : Global
InstanceName :
ReadOnly : True
MachineName : .
RawValue : 0
Site :
Container :
サーバーは Windows 2008 R2 で、.NET 4.5 を実行しています。
重要な注意点は、他のすべてのパフォーマンス カウンターがこのように動作しているわけではなく、最近追加された一部のパフォーマンス カウンターのみであるということです (これらは機能しないものです)。他のすべてのカウンターの場合、RawValue id は、ReadOnly であるかどうかにかかわらず、常に同一です。
何がこれを引き起こしているのでしょうか?