2015-12-13 6 views
5

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.

+0

Welche OS? Hast du 'jstack -m-F' probiert? Hast du Java 8 ausprobiert? – the8472

+0

Haben Sie 'perf' versucht? – Ivan

+0

Ich habe den Betriebssystemtyp hinzugefügt. Ich habe Java 8, JStack oder Perf noch nicht getestet. –

Antwort

Verwandte Themen