mit JVM Lauf:JVM Einfrieren unter hoher Last in Langlebigkeit testet
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
OS:
CentOS release 6.4 (Final)
Jvm Optionen:
-Xmx4g -Xms4g -XX:MaxPermSize=4g -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintClassHistogram -XX:+CMSClassUnloadingEnabled -verbose:gc -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+DisableExplicitGC
in einer OSGi-Umgebung Rennen, Aerospike DB, NETTY (NIO) für die Vernetzung.
Lief ein Wochenende Langlebigkeitstest. Diese war der letzte Druck:
[2015-12-11 09:54:51,185] INFO : [GC pause (young)
Nach 2 Tagen lief ich strace auf der pid, und dann diejenigen, sind die nächsten Drucke:
[2015-12-11 09:54:51,185] INFO : [GC pause (young) 3598M->1458M(4096M), 0.0280020 secs]
[2015-12-13 11:54:54,353] INFO : [GC pause (young) 3598M->1464M(4096M), 180001.5628870 secs]
Der erste Druck beendet und der nächste Druck zeigte eine 2 Tage GC.
Die jvm reagierte während des Einfrierens nicht auf Thread-Dump-Signale (pkill -QUIT pid). Dieses Einfrieren geschieht alle paar Tage. Das Einfrieren geschieht nicht nur mit dem G1-Kollektor, sondern auch mit dem CMS-Kollektor. Wie kann ich mit dem Debuggen beginnen und was kann das verursachen?
Vielen Dank.
EDIT: Hatte ein weiteres Einfrieren, dieses Mal die Strace nicht den Einfrieren freigeben. Der zweite Freeze wurde mit Jstack veröffentlicht.
UPDATE: Das Problem gefunden! Sehen Sie sich die Antwort unten an.
Welche OS? Hast du 'jstack -m-F' probiert? Hast du Java 8 ausprobiert? – the8472
Haben Sie 'perf' versucht? – Ivan
Ich habe den Betriebssystemtyp hinzugefügt. Ich habe Java 8, JStack oder Perf noch nicht getestet. –