HiccupMeter
Das MBean HiccupMeter ermittelt Pausen der Java VM und warnt über eine Meldung im Server-Log, wenn eine ungewöhnlich hohe Zeit gemessen wird. Solche längeren Pausen der VM („Hiccups“) können beispielsweise durch eine lang andauernde GarbageCollection hervorgerufen werden.
Das MBean benutzt für die Messung einen eigenen Thread, der sich starten und stoppen lässt. Das MBean ist allerdings immer registriert, auch wenn der Thread nicht läuft. Das MBean besitzt eine Reihe von Methoden über welche die Parameter für die Messung eingestellt und der Mess-Thread gestartet und beendet werden kann.
Über die fs-server.conf werden die Parameter hiccup.startThread (Startet die Messung – Standardeinstellung true) und hiccup.warningLogLimit (Warnung beim Erreichen der konfigurierten Pausenzeit – Standardeinstellung 20 s) konfiguriert (siehe Bereich: VM hiccup detector MBean).
Attribute
Resolution: Auflösung der Hiccup-Messung
Tolerance: Messtoleranz bezogen auf die Auflösung. Wird die Toleranz bei einer Messung überschritten wird das als Hiccup gewertet.
WarningLimit: Ist ein Hiccup länger als dieses Limit, wird ein Warning im Server-Log geschrieben.
ThreadStarted: Liefert zurück ob der der Mess-Thread gestartet ist (true) oder nicht (false)
MaximumJitterPerMinute: Maximaler Jitter-Wert im letzten Intervall (ca. letzte Minute)
JitterCountPerMinute: Jitter-Anzahl (Toleranz überschritten) im letzten Intervall (ca. letzte Minute).
AverageJitterPerMinute: Durchschnittlicher Jitter-Wert im letzten Intervall (ca. letzte Minute).
LastJitter: Letzter gemessener Hiccup.
MaxJitter: Bisher maximaler, gemessener Hiccup (Das Zurücksetzen ist über die Methode resetMaxJitter möglich).
DetectObjectAllocationStalls: Objektallokation kann verwendet werden, um während der Messung ein Objekt zu erzeugen, um Pausen, die durch diese Aktion entstehen zu messen (DetectObjectAllocationStalls=true).
Operations
void startThread(): Startet den Mess-Thread. Wenn der Thread bereits läuft, wird keine Aktion ausgeführt.
void stopThread(): Stoppt den Mess-Thread. Wenn der Thread nicht läuft, wird keine Aktion ausgeführt.
void restartThread(): Mess-Thread neu starten. Wenn der Thread nicht läuft, wird er gestartet.
void resetToDefaultParameters(): Die Attribute Resolution, Tolerance, WarningLimit, DetectObjectAllocationStalls werden auf die Standardwerte zurückgesetzen und der Thread wird neu gestartet.
void resetMaxJitter(): MaxJitter zurücksetzen.