Wie starte ich JVM neu, wenn der JORM-Speicher nicht mehr ausreicht?

8

Ich möchte einen Nagios-Watchdog für JVM erstellen, der aussieht, wenn die JVM nicht mehr genügend Arbeitsspeicher hat und ihn neu startet.

Momentan war ich in der Lage, die JVM zu konfigurieren und JMX zu erlauben, aber ich weiß nicht, wie ich die OutOfMemory-Bedingung erkennen und neu starten kann.

%Vor%

Ссылка

    
sorin 25.07.2012, 16:32
quelle

2 Antworten

12

Wenn Sie Java 1.4.2 oder höher verwenden, können Sie mit dieser Option einen benutzerdefinierten Befehl ausführen, wenn die erste OutOfMemeory-Ausnahme auftritt: -XX:OnOutOfMemoryError="<cmd args & gt ;; & lt; cmd args & gt; "

Das sollte dir einige anständige Optionen geben. z.B. Sie könnten Nagios einen passiven Check geben, um ihm mitzuteilen, dass der Server neu gestartet wird, und dann ein Shell-Skript starten, um Ihre fehlerhafte JVM zu stoppen / starten.

    
Nicholas 25.07.2012 18:42
quelle
1

Ich glaube nicht, dass Sie mit JMX eine Speichermangelbedingung erkennen können. Wenn die JVM wirklich am Ende ihrer Lebensdauer ist, werden JMX-Verbindungen höchstwahrscheinlich selbst OOM-Ausnahmen auslösen, wenn Sie versuchen, eine Verbindung herzustellen.

Wir erkennen hohe Speicherbedingungen anstelle von OOM. Wir alarmieren, wenn der freie Speicher unserer Systeme für eine bestimmte Zeit unter eine Wassermarke fällt. Wir haben auch Threads, die ausgeführt werden, um Pro-Serve-Metrik-Dateien auszugeben. Da der Thread bereits zugewiesen ist, kann er Systemspeicherinformationen nach Ablauf der JVM zuverlässig ausgeben.

Wir protokollieren:

%Vor%     
Gray 25.07.2012 17:17
quelle

Tags und Links