Частота сбора мусора

Microsoft.JEE.PerformanceHealth.GarbageCollectorRateMonitor (UnitMonitor)

Системный монитор, отслеживающий частоту сбора мусора сервера приложений

Knowledge Base article:

Краткое описание

Системный монитор частоты сбора мусора отслеживает частоту, с которой выполняются операции сборки мусора в виртуальной машине Java, связанной с сервером приложений.

Причины

Неработоспособное состояние означает, что сборщик мусора превысил отслеживаемое пороговое значение, заданное для сервера приложений.

Решения

Element properties:

TargetMicrosoft.JEE.GarbageCollector
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.JEE.ThresholdDeltaUnitMonitor
RemotableTrue
AccessibilityPublic
Alert Message
Превышено значение монитора частоты сбора мусора
Превышено пороговое значение монитора частоты сбора мусора для ИД сервера приложений: {0}, имя объекта: {1}, имя счетчика: {2}, имя экземпляра: {3}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.JEE.PerformanceHealth.GarbageCollectorRateMonitor" Accessibility="Public" Enabled="false" Target="Microsoft.JEE.GarbageCollector" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.JEE.ThresholdDeltaUnitMonitor" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.JEE.PerformanceHealth.GarbageCollectorRateMonitor_AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<!-- The alert description should include key properties of: -->
<!-- * the deep monitored application server -->
<!-- * the performance counter object name -->
<!-- * counter name -->
<!-- * instance name -->
<AlertParameter1>$Target/Host/Property[Type="Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Id$</AlertParameter1>
<AlertParameter2>Garbage Collector</AlertParameter2>
<AlertParameter3>JVM Garbage Collector Collection Count Change Rate</AlertParameter3>
<AlertParameter4>$Target/Property[Type="Microsoft.JEE.GarbageCollector"]/GarbageCollectorName$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Microsoft.JEE.PerformanceHealth.GC.Rate.UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="Microsoft.JEE.PerformanceHealth.GC.Rate.OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Microsoft.JEE.ApplicationServer.Monitored.Instance"]/HostName$</ComputerName>
<Protocol>$Target/Host/Property[Type="Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Protocol$</Protocol>
<Port>$Target/Host/Property[Type="Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Port$</Port>
<BaseURL/>
<URLSuffix/>
<IntervalSeconds>900</IntervalSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<!-- Need to find the GCCollectionCount that has a sibling element -->
<!-- called GCName with a value of (for example) "PS Scavenge" -->
<!-- XPath should look like: -->
<!-- /Stats/GC/Properties/GCCollectionTime[../GCName = "PS Scavenge"] -->
<MetricName>/Stats/GC/Properties/GCCollectionCount[../GCName = "$Target/Property[Type="Microsoft.JEE.GarbageCollector"]/GarbageCollectorName$"]$</MetricName>
<!-- The spec says that a value of 30 GC's per hour is the threshold -->
<!-- as the monitor runs every 300 seconds (5 mins) an value of 5 -->
<!-- GC's per interval has been chosen -->
<Threshold>5</Threshold>
<SampleCount>2</SampleCount>
</Configuration>
</UnitMonitor>