垃圾回收率

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
超过垃圾回收器率监视器
对于以下应用程序服务器 ID,垃圾回收器率监视器已超出其阈值:{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>