Warum die JVM diese Tomcat-Server führen Sie eine vollständige GC stündlich?
Wir führen viele Tomcat-Server und haben beobachtet, full garbage collections (GCs) werden Häufig durchgeführt, auf Stundenbasis, besonders wenn die Speicherauslastung ist relativ gering. Die genaue Zeit erscheint in Bezug auf die Zeit, die der application server gestartet wurde; wenn ein server gestartet wird um 01:13, eine volle GC erfolgt bei 02:13, und die nächste volle GC wird bei auftreten 03:13. Ich habe nicht in der Lage zu finden, keine Dokumentation zu erklären dieses Verhalten.
Dies ist ein problem, weil ein server-pool begann gleichzeitig alle dazu neigen, full GCs in der gleichen Zeit. Wenn die GC Verzögerung ist lang genug, um zu einem load-balancer, um markieren Sie einen server herunter, der gesamten Anwendung kann offline gehen für eine Zeit. Es wäre besser, wenn der full GCs werden konnte, verteilt über einen Zeitraum, so dass keine zwei Server sind dabei eine volle GC in der gleichen Zeit, aber ich finde keine Möglichkeit um dieses Verhalten zu Steuern.
Hat jemand gesehen, dass dieses Verhalten? Gibt es eine Möglichkeit, zu beeinflussen, wenn diese "normale" full GCs passieren?
- Haben Sie einen Prozess, der läuft nach einem Zeitplan (via Quartz, et al.) möglicherweise füllen die Haufen auf einer regelmäßigen basis?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre "regelmäßig" stündlich GCs sind wahrscheinlich durch dieser bekannte Fehler, "Die JreMemoryLeakPreventionListener führt zu einem vollständigen GC jede Stunde, wenn gcDaemonProtection=true".
Bestätigen Sie Ihre Tomcat-Versionen und den Wert der
gcDaemonProtection
Eigentum IhrerJreMemoryLeakPreventionListener
(Standard isttrue
).War der patch angeblich enthalten in Tomcat v. 7.0.28+ und v. 6.0.36+.
Entweder aktualisieren Sie Ihren server(s), oder wählen Sie eine nicht-Upgrade-Lösung von hier zusammengefasst:
-XX:+DisableExplicitGC
-XX:+ExplicitGCInvokesConcurrent
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"
gcDaemonProtection="false"/>
Kredit, in dem Kredit passend ist; ich erhielt meine erste Antwort von hier.
sollten Sie in der Lage sein, um das Intervall zu ändern, indem
werfen Sie einen Blick hier
https://docs.oracle.com/cd/E19199-01/817-2180-10/pt_chap5.html