Correndo con JVM:JVM Fermo sotto carico elevato in longevità test
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)
opzioni JVM:
-Xmx4g -Xms4g -XX:MaxPermSize=4g -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintClassHistogram -XX:+CMSClassUnloadingEnabled -verbose:gc -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+DisableExplicitGC
esecuzione in un ambiente OSGi, Aerospike DB, NETTY (NIO) per il networking.
Eseguire un test di longevità nel fine settimana. Questa è stata l'ultima di stampa:
[2015-12-11 09:54:51,185] INFO : [GC pause (young)
dopo 2 giorni ho eseguito strace sul pid, e poi quelli sono i prossimi stampe:
[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]
La prima stampa finito e la stampa successiva ha mostrato un 2 giorni GC.
jvm non ha risposto ai segnali di dump del thread durante il freeze (pkill -QUIT pid). Questo blocco si verifica ogni pochi giorni. Il blocco si verifica non solo con il collector G1, ma anche con il collector CMS. Come posso avviare il debug di questo e cosa può potenzialmente causare questo?
Grazie.
MODIFICA: In caso di un altro blocco, questa volta lo strace non rilascia il blocco. Il secondo blocco è stato rilasciato usando jstack.
UPDATE: Trovato il problema! Guarda la risposta qui sotto.
Quale sistema operativo? Hai provato 'jstack -m -F'? Hai provato java 8? – the8472
Hai provato 'perf'? – Ivan
Ho aggiunto il tipo di sistema operativo. Non ho ancora provato Java 8, jstack o perf. –