Eine Produktionsumgebung wurde kürzlich sehr langsam. Die CPU des Prozesses nahm 200%. Es funktionierte jedoch weiter. Nach dem Neustart des Dienstes funktionierte es wieder normal. Ich habe mehrere Symptome: Der Par-Survivor Space-Heap war für eine lange Zeit leer und die Speicherbereinigung dauerte etwa 20% der CPU-Zeit.Old Gen Haufen ist voll und die Eden und Survivor sind niedrig und fast leer
JVM-Optionen:
X:+CMSParallelRemarkEnabled, -XX:+HeapDumpOnOutOfMemoryError, -XX:+UseConcMarkSweepGC, - XX:+UseParNewGC, -XX:HeapDumpPath=heapdump.hprof, -XX:MaxNewSize=700m, -XX:MaxPermSize=786m, -XX:NewSize=700m, -XX:ParallelGCThreads=8, -XX:SurvivorRatio=25, -Xms2048m, -Xmx2048m
Arch amd64
Dispatcher Apache Tomcat
Dispatcher Version 7.0.27
Framework java
Heap initial (MB) 2048.0
Heap max (MB) 2022.125
Java version 1.6.0_35
Log path /opt/newrelic/logs/newrelic_agent.log
OS Linux
Processors 8
System Memory 8177.964, 8178.0
Mehr Informationen im beigefügten Bild Wenn das Problem auf dem aufgetretenen Nicht-Heap den verwendeten Code-Cache und verwendet cms zul gen auf die Hälfte gesunken.
Ich nahm die Informationen aus dem Newrelic.
Die Frage ist, warum der Server so langsam zu arbeiten beginnt.
Manchmal stoppt der Server vollständig, aber wir haben festgestellt, dass es ein Problem mit PDFBox gibt. Beim Hochladen einiger PDFs und einigen Schriftarten stürzt die JVM ab.
Weitere Informationen: Ich habe beobachtet, dass sich das Alte Gen täglich füllt. Jetzt starte ich den Server täglich neu. Nach dem Neustart ist alles schön und gut, aber das alte Gen füllt sich bis zum nächsten Tag und der Server verlangsamt sich bis zu einem Neustart.
Also, was ist die Frage? –
Wenn Ihr Dauerwelle-Platz erschöpft ist und Ihr neuer Platz fast leer ist, wäre es nicht sinnvoll, die Größe des neuen Platzes zu verringern und der Dauerwelle mehr Platz zuzuweisen? Wenn Sie dies tun und mit dem gleichen Problem enden, haben Sie möglicherweise ein Speicherleck. – TMN
Die Dauerwelle enthält die kompilierten Klassen und einige andere Sachen. Das Problem, das ich sehe, ist, dass sich die Alte Generation aufbaut. Ich muss den Server jeden Tag neu starten, um wieder normal zu werden. Wenn die Dauergrafik (und der Rest) ausfällt, wird der Tomcat neu gestartet. – Bogdan