ガベージ コレクション時間

Microsoft.JEE.PerformanceHealth.GarbageCollectorTimeMonitor (UnitMonitor)

アプリケーション サーバーのガベージ コレクション時間のパフォーマンス モニター

Knowledge Base article:

概要

ガベージ コレクション時間モニターは、アプリケーション サーバーに関連付けられた Java 仮想マシンでガベージ コレクターがガベージ コレクションに費やした時間を追跡します。

原因

異常な状態は、ガベージ コレクターが、アプリケーション サーバーに構成されている、監視対象のしきい値を超えていることを示します。

ガベージ コレクション時間がしきい値を超えるのには、対照的な原因が 2 つあります。

解決策

リソース不足が原因の場合は、Java 仮想マシンに割り当てるリソースを増やします。

リソースが多すぎることが原因の場合は、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.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>