Tempo de coleta de lixo

Microsoft.JEE.PerformanceHealth.GarbageCollectorTimeMonitor (UnitMonitor)

O monitor de desempenho para o tempo de coleta de lixo de um servidor de aplicativos.

Knowledge Base article:

Resumo

O monitor de tempo de coleta de lixo rastreia o tempo que o coletor de lixo leva para realizar coletas de lixo na Máquina Virtual Java associada ao servidor de aplicativos.

Causas

Um estado não íntegro indica que o coletor de lixo excedeu o limite monitorado configurado para o servidor de aplicativos.

Há duas causas distintas que fazem com que o tempo de coleta de lixo exceda o valor limite:

Resoluções

Se a causa estiver relacionada a um número insuficiente de recursos, o problema será minimizado quando mais recursos forem alocados para a Máquina Virtual Java.

Se a causa estiver relacionada a um número excessivo de recursos, o problema será minimizado quando alguns recursos forem removidos da Máquina Virtual 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
Monitor excedido do tempo do coletor de lixo
O monitor de tempo de coleta de lixo excedeu seu limite para a identificação do servidor de aplicativos: {0}, Nome de objeto: {1}, Nome de contador: {2}, Nome de instância: {3}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.JEE.PerformanceHealth.GarbageCollectorTimeMonitor" 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.GarbageCollectorTimeMonitor_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 Time Change Rate</AlertParameter3>
<AlertParameter4>$Target/Property[Type="Microsoft.JEE.GarbageCollector"]/GarbageCollectorName$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Microsoft.JEE.PerformanceHealth.GC.Time.UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="Microsoft.JEE.PerformanceHealth.GC.Time.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 GCCollectionTime 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/GCCollectionTime[../GCName = "$Target/Property[Type="Microsoft.JEE.GarbageCollector"]/GarbageCollectorName$"]$</MetricName>
<!-- The spec says that a value of 1000ms per GC is the threshold -->
<!-- as the monitor cannot calculate the values a value of 5000ms -->
<!-- has been chosen for the 300 second monitor frequency -->
<!-- This equates to roughly 5 GC's per 300 seconds of under 1000ms each -->
<Threshold>5000</Threshold>
<SampleCount>2</SampleCount>
</Configuration>
</UnitMonitor>