WMI 메모리 사용량 모니터

Microsoft.SystemCenter.WMIPrivateBytes.Monitor (UnitMonitor)

이 모니터는 컴퓨터의 WMI 메모리 사용량을 확인합니다.

Knowledge Base article:

요약

이 컴퓨터의 WMI 서비스가 너무 많은 메모리를 사용하고 있습니다.

이 모니터는 WmiPrv로 시작하는 모든 프로세스 인스턴스에 대한 전용 바이트를 확인하고 이를 2개의 임계값과 비교하여 컴퓨터에서 WMI가 사용하는 총 메모리 사용량을 정기적으로 확인합니다. 기본적으로 이 모니터는 WMI 관련 프로세스가 500MB보다 많은 메모리를 소모할 경우 경고 상태로 전환됩니다. WMI 관련 프로세스가 600MB보다 많은 메모리를 소모할 경우에는 오류 상태로 전환됩니다.

원인

WMI 메모리 손실로 인해 시간이 지남에 따라 WMI가 더 많은 메모리를 소모하기 때문일 수 있습니다.

해결 방법

WMI 메모리 문제의 패턴을 살펴보면 이 모니터에서는 경고 또는 오류 임계값이 초과되었을 때 자동으로 WMI를 다시 시작하는 복구가 사용되지 않도록 설정되어 있습니다. 이 방법으로 문제가 해결된다는 것을 확인한 경우 해당 복구 중 하나를 사용하도록 설정할 수 있습니다.

외부 정보

WMI 문제 해결에 대한 자세한 내용을 보려면 http://go.microsoft.com/fwlink/?LinkId=158224를 방문하세요.

http://go.microsoft.com/fwlink/?LinkId=158226에서 WMI 진단 유틸리티를 다운로드할 수도 있습니다. WMI 진단 유틸리티는 컴퓨터에서 WMI 서비스 문제를 해결하는 데 유용하도록 설계된 VBScript 스크립트입니다.

Element properties:

TargetMicrosoft.SystemCenter.Agent
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SystemCenter.Performance.FilteredDoubleThreshold.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
높은 WMI 메모리 사용량

WMI 메모리 사용량이 너무 높습니다. {0} 인스턴스 {1} 개체 {2} 카운터의 값이 {4} 컴퓨터에서 {3}입니다.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.WMIPrivateBytes.Monitor" Accessibility="Public" Enabled="false" Target="SCLibrary!Microsoft.SystemCenter.Agent" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SystemCenter.Performance.FilteredDoubleThreshold.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.WMIPrivateBytes.Monitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/InstanceName$</AlertParameter1>
<AlertParameter2>$Data/Context/ObjectName$</AlertParameter2>
<AlertParameter3>$Data/Context/CounterName$</AlertParameter3>
<AlertParameter4>$Data/Context/Value$</AlertParameter4>
<AlertParameter5>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter5>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold1" MonitorTypeStateID="UnderThreshold1" HealthState="Success"/>
<OperationalState ID="OverThreshold1UnderThreshold2" MonitorTypeStateID="OverThreshold1UnderThreshold2" HealthState="Warning"/>
<OperationalState ID="OverThreshold2" MonitorTypeStateID="OverThreshold2" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Private Bytes</CounterName>
<ObjectName>Process</ObjectName>
<InstanceName/>
<AllInstances>true</AllInstances>
<Frequency>300</Frequency>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">InstanceName</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>WmiPrv</Pattern>
</RegExExpression>
</Expression>
<Threshold1>524288000</Threshold1>
<Threshold2>629145600</Threshold2>
</Configuration>
</UnitMonitor>