2012-02-03 7 views
15

Tratando de diagnosticar algunos errores extraños de Tomcat (7.0.21) y/o JVM en una máquina Linux de 64 bits (CentOS).Tomcat muere repentinamente

Estoy cargando la prueba de nuestra aplicación de servidor e intenté con 100K mensajes. Lancé jvisualvm y mantuve mi ojo en el montón todo el tiempo. Todo se veía genial * (ver abajo) hasta que llegué a unos 93K mensajes procesados ​​y luego Tomcat acaba de morir. Ejecuté ps en el número PID de Tomcat para confirmar que estaba muerto.

Hasta este accidente:

  • Prueba de carga había estado funcionando durante unos 90 minutos; debería haber terminado poco después ya que estábamos en 93K/100K)
  • CPU se mantiene fuerte en torno al 45%
  • montón usada fue de alrededor de 2 GB (más o menos un montón después de GC), pero tamaño de la pila creció de 4 GB a MAX_HEAP después de unos 30 minutos
  • Clase de carga/descarga ciclos normales se
  • vertederos de rosca fueron normales

en ninguna parte del código del servidor son las llamadas a System.exit() - por lo que podemos descartar que la derecha (y sí que he doble -¡¡¡comprobado!!!).

No estoy seguro de si esto es estrellarse Tomcat o la JVM (¿cómo le digo?). Y aunque lo sabía, me parece que no puede encontrar ninguna indicación de lo que salió mal:

  • Todos los registros de la aplicación del servidor pararse sin ningún mensaje de error (a pesar de que el log universalmente establecido depurar y superior) catalina.out y respeto localhost_access_* archivos
  • de Tomcat sólo dejan sin ningún tipo de información

he oído que es posible tener Tomcat ingrese un volcado de núcleo cuando lo hace, pero no está seguro de cómo hacerlo y ejemplos en línea aren' t ayudando mucho.

¿Cómo va SO a diagnosticar esto? ¿Qué pasos debo seguir para comenzar a descartar todos los posibles factores?

¡Gracias de antemano!

+13

¿Es Tomcat de Schrödinger? – erickson

+0

¿Revisó más registros? http://stackoverflow.com/questions/1575730/debugging-tomcat-crash –

+0

Para tu información, puedes saber si el OOM Killer asesina a tomcat ya que la palabra "Killed" aparecerá en algún lugar cerca del final de catalina.out . – Tom

Respuesta

1

Lo siento, tuve que quitar el cheque verde de @erickson. Finalmente descubrí lo que estaba matando a Tomcat.

Parece que un plugin de perfilador no está configurado correctamente con VisualVM y al intentar ejecutar un perfil en el proceso de Tomcat lo mató.

Investigar por qué en este momento, y actualizaré esta respuesta una vez que sepa más.

+2

¿Quiere decir, "también es posible que' jvisualvm' esté causando el bloqueo? ";) – erickson

14

Si la JVM falla, debe tener un archivo hs_err_pidNNN.log; no tienes que hacer nada para habilitar esto. Su ubicación depende de su sistema operativo y de cómo está ejecutando Tomcat. En Windows, pueden aparecer en su escritorio, a menos que esté ejecutándose como un servicio. De lo contrario, deberían estar en el directorio de trabajo actual del proceso bloqueado.

Su sistema operativo probablemente proporciona herramientas adicionales para la supervisión del proceso; podría describir su entorno más, o quizás preguntar al serverfault.com.

También es posible que jvisualvm esté causando el bloqueo.

Intentaré reproducir el problema y simplificaré progresivamente el escenario para ayudar a aislar la causa.

+1

Gracias erickson, ¿dónde encontraría este archivo de registro? Supongo que en mi directorio JDK o por ahí? – IAmYourFaja

+0

ahhh nm - parece que será el cwd o/tmp – IAmYourFaja

+0

Depende de su sistema operativo y de cómo está ejecutando Tomcat. En Windows, pueden aparecer en su escritorio, a menos que esté ejecutándose como un servicio. De lo contrario, deberían estar en el directorio de trabajo actual del proceso bloqueado. – erickson

6

Otra posibilidad es que el sistema operativo se está quedando sin memoria y el OOM Killer está acabando con el proceso. En este caso, la JVM no tendría la oportunidad de escribir un volcado de pila, o un archivo hs_err_pid.