Así que cada dos días mi proceso de Java en Ubuntu muere automáticamente, y no puedo entender por qué.Algo sigue matando mi proceso de Java en Ubuntu, ¿alguien sabe por qué?
Mi caja tiene 35.84 GB de RAM, cuando lance mi proceso de Java, le paso el parámetro -Xmx28g, por lo que debería estar utilizando mucho menos que la RAM máxima disponible.
me corrieron jstat de la siguiente manera:
# jstat -gccause -t `pgrep java` 60000
Las últimas líneas de salida de jstat inmediatamente antes del proceso mataron fueron:
Time S0 S1 E O P YGC YGCT FGC FGCT GCT LGCC GCC
14236.1 99.98 0.00 69.80 99.40 49.88 1011 232.305 11 171.041 403.347 unknown GCCause No GC
14296.2 93.02 0.00 65.79 99.43 49.88 1015 233.000 11 171.041 404.041 unknown GCCause No GC
14356.1 79.20 0.00 80.50 99.55 49.88 1019 233.945 11 171.041 404.986 unknown GCCause No GC
14416.2 0.00 99.98 24.32 99.64 49.88 1024 234.945 11 171.041 405.987 unknown GCCause No GC
Esto parece ser lo que pasó en el/var/log/syslog en este momento: https://gist.github.com/1369135
No hay nada en ejecución en este servidor que no sea mi aplicación java. ¿Que esta pasando?
editar: Estoy ejecutando la versión 1.6.0_20 de java, los únicos parámetros notables que paso a java en el inicio son "-server -Xmx28g". No estoy usando un servidor de aplicaciones, pero mi aplicación incorpora el "Marco web simple".
Max physical ram no equivale a la cantidad que puede utilizar un proceso. Eric Lippert tuvo una excelente publicación en este. Sé que la publicación está centrada en Windows/.NET, pero también es muy elástica. Solo por curiosidad, ¿puedes intentar capturar un OutOfMemoryError y registrar esto para confirmar/negar que esta es la causa? –
Estoy registrando stdout y stderr, que creo que es donde iría un OOM, y no veo nada que indique una excepción de OOM ... Según mi experiencia, un OOM da como resultado que la aplicación deje de funcionar y no muera. En este caso, parece que el SO ha matado a la aplicación. – sanity