2012-04-24 16 views
13

tenemos problemas con Tomcat 5.5 que se detiene en la noche en nuestros servidores de producción (Linux CentOS 4.8) y no tenemos idea de por qué se detiene ... hay ningún registro de Tomcat en catalina. fuera o el registro de cualquier aplicación.Tomcat parado sin ningún tipo de registro o cualquier pila

probamos cosas diferentes para encontrar por qué el servidor se detiene:

  • configurar Tomcat para ser capaz de generar un volcado de memoria
  • instrumento System.exit() método con javassist de encontrar si el método se llama
  • complemento un gancho de cierre a la JVM (con Runtime.getRuntime().addShutdownHook())

Ninguno de ellos trabajó, no tenemos volcado de memoria, el método de la salida y el cierre de gancho de una re no llamado. Mis conclusiones son:

  • La máquina virtual no está terminada correctamente, pero se bloquea sin ningún registro.

¿Alguna idea o log para leer para descubrir por qué se detiene Tomcat?

+0

Si puede reproducir este problema en otro servidor, puede utilizar JConsole para supervisar su JVM –

+0

que he visto en mí Tomcat parar mientras se ejecuta desde Eclipse. La parada no manifestó ningún tipo de mensajes o registros, sin embargo, creo que lo reduje para apilar problemas de desbordamiento durante las recuperaciones recursivas de Hibernate. – maksimov

+0

No podemos replicar el problema, a veces ocurre en diferentes servidores que no están haciendo nada específico. – Remi

Respuesta

0

Lo más probable es que haya una excepción de desbordamiento de pila. Este es el comportamiento típico de Tomcat cuando sucede. Por ejemplo, está tratando de serializar beans JSON o XML con dependencias cíclicas (pero sin manejar los ciclos).

Cada vez que tuve este problema (varias veces) siempre ha sido este. Todas las demás paradas generalmente se registran correctamente (como OutOfMemory, etc.).

Este tipo de paradas no deja rastro en ninguna parte.

+0

que es un reclamo bastante aleatorio –

+0

Cada vez que tuve este problema (varias veces) siempre ha sido este. Todas las demás paradas generalmente se registran correctamente (como OutOfMemory, etc.). –

+0

¿Hay alguna forma de que sepa depurar/resaltar esto de alguna manera @Eugene Retunsky? ¿Cómo se puede verificar ese reclamo? – mass

0

Tomcat 7 tiene una opción dentro de catalina para evitar la llamada clase System.exit o algo similar: http://ci.apache.org/projects/tomcat/tomcat7/docs/security-manager-howto.html.

Quizás exista una opción similar para la versión 5.5. Prueba la documentación.

hay opciones para redirigir la salida a la misma consola que utiliza para arrancar Tomcat. Esta información se redirige a los registros cuando se ejecuta en sistemas basados ​​en Unix, en Windows, permanece con la consola si no se redirige.

20

1) Asegúrese de saber donde se redirige stderr y comprobar si algo se imprimieron allí.

2) Comprobar los límites de memoria en Tomcat y la cantidad de memoria libre que hace el sistema tiene. Revise los registros del sistema Linux en/var/log para ver si sucedió algo sospechoso durante el tiempo. Por ejemplo, kernel puede matar aleatoriamente un proceso (casi) sin dejar rastro si el sistema se está quedando sin memoria.

Hemos corrió 5.5 en la producción durante años y nunca he tenido ningún paradas inexplicables, Fwiw.

+11

Bingo./var/log/message tiene "memoria insuficiente: proceso de matar 31201 (java) puntaje 783 o sacrificar hijo". – Kof

+0

+1. como lo sugirió KOF: '/ var/log/messages' mostraba que el proceso de Java había sido eliminado. – ankitjaininfo

+4

Utilice el comando 'dmesg' si no tiene acceso a'/var/log/messages' –

Cuestiones relacionadas