Monitor użycia pamięci przez usługę WMI

Microsoft.SystemCenter.WMIPrivateBytes.Monitor (UnitMonitor)

Ten monitor sprawdza użycie pamięci przez usługę WMI na tym komputerze.

Knowledge Base article:

Podsumowanie

Usługa WMI na tym komputerze zużywa za dużo pamięci.

Ten monitor okresowo sprawdza łączne użycie pamięci komputera przez usługę WMI, sprawdzając licznik Prywatne bajty dla wszystkich wystąpień procesów, których nazwy zaczynają się ciągiem WmiPrv, i porównując jego wartość z dwoma progami. Domyślnie monitor przechodzi w stan ostrzegawczy, jeśli którykolwiek proces związany z usługą WMI zużywa ponad 500 MB pamięci. Przejście w stan błędu następuje, jeśli którykolwiek proces związany z usługą WMI zużywa ponad 600 MB pamięci.

Przyczyny

Możliwą przyczyną jest wyciek pamięci w usłudze WMI powodujący coraz większe zużycie pamięci wraz z upływem czasu.

Rozwiązania

Jeśli problemy z pamięcią usługi WMI pojawiają się regularnie, ten monitor zawiera wyłączone odzyskiwania, które powodują automatyczne ponowne uruchomienie usługi WMI po przekroczeniu progu ostrzeżenia lub błędu. Jeśli to rozwiązuje problem, można włączyć jedno z tych odzyskiwań.

Zewnętrzne

Więcej informacji na temat rozwiązywania problemów dotyczących WMI można znaleźć pod adresem http://go.microsoft.com/fwlink/?LinkId=158224.

Można również pobrać narzędzie diagnostyczne WMI spod adresu http://go.microsoft.com/fwlink/?LinkId=158226. Narzędzie to jest skryptem VBScript opracowanym w celu ułatwienia rozwiązywania problemów z usługą WMI na komputerze.

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
Wysokie użycie pamięci przez usługę WMI

Użycie pamięci przez usługę WMI jest za wysokie: licznik {2} dla wystąpienia {0} w obiekcie {1} na komputerze {4} ma wartość {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>