当我遇到这个奇怪的问题时,我试图弄清楚为什么某些性能计数器没有在我们的生产服务器中更新 - 计数器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。
一个重要的注意事项是,我所有的其他性能计数器都不是这样,只有一些最近添加的性能计数器(这些是不起作用的)。对于所有其他计数器,无论是否为 ReadOnly,RawValue id 始终相同。
知道是什么原因造成的吗?