Tengo el siguiente problema:
Despliego una aplicación web en Tomcat (Linux) y después de cerrar Tomcat, si hago ps -ef
todavía puedo ver el proceso java
ejecutándose.
Creo que esto sucede debido a algún hilo colgante, pero no sé cómo puedo rastrear este hilo.
¿Cómo puedo solucionar este problema?¿Cómo puedo depurar un hilo Java colgante?
Respuesta
Puede generar 4-5 volcados de hilo como se describe a continuación y luego analizarlos utilizando herramientas como Samurai.
Lo que quiere comprobar es cuando ocurre un hilo atascado o una transacción de larga ejecución, todos los volcados de hilo mostrarán que cierta identificación de subproceso está en la misma línea en su rastro de pila de Java. En términos más simples, la transacción abarca varios volcados de hilo y, por lo tanto, necesita más investigación.
Ahora, cuando los ejecuta a través de Samurai, los resaltará en color rojo para que pueda hacer clic rápidamente en él y llegar a las líneas que muestran problemas.
Vea un ejemplo de este here. Mire la imagen de salida de Samurai en ese enlace. Las células verdes están bien. Las celdas rojas y grises necesitan mirar.
Generación de un volcado del hilo:
(Linux)
Si la JVM se ejecuta en una consola a continuación, sólo tiene que pulsar Ctrl-\
. Si la JVM se ejecuta en segundo plano después enviarlo a la señal QUIT:
kill -QUIT process_id
Hay id_proceso es el número de proceso del proceso de Java que se ejecuta. El volcado de hilo se enviará a donde se redirija la salida estándar. general, usted puede obtener los números de proceso de todos los procesos Java que se ejecutan con el comando:
ps axf | grep java
Usted dice que todavía existe el proceso de java, ¿verdad? Existen procesos siempre que tengan hilos adjuntos, ¿verdad? Si es así, me gustaría ir a por el siguiente enfoque: - ejecutar el proceso con el servidor MBean adjunto y gestionada internamente por la JVM
se conectará con el proceso después de enviar la señal de dejar de fumar y obtener el volcado de hilo (hay debe ser un JMX para eso. Ver el cual las discusiones mirada sospechosa en su caso.
Creo que también se puede utilizar para tomar jvisualvm hilo vertederos ...
No sé cómo hacer los enfoques que recomienda – Jim
Esto se ve aún más fácil, pero era ya sugerido por aviad :): http://www.crazysquirrel.com/computing/java/basics/java-thread-dump.jspx –
En cuanto al enfoque JVisualVM, aquí hay un tutorial http://docs.oracle.com /javase/6/docs/technotes/guides/visualvm/threads.html. Básicamente jvisualvm es solo un archivo ejecutable que se puede encontrar en la carpeta $ JAVA_HOME/bin ... ejecútelo, conéctese a su aplicación y vea qué puede hacer con él. Algo bastante poderoso, realmente :) –
- 1. Java - Extraño zócalo colgante?
- 2. ¿Cómo puedo matar un hilo de otro hilo en Java?
- 3. ¿Puedo ejecutar un hilo dentro de un hilo en java?
- 4. ¿Cómo puedo simular un cable colgante en WPF?
- 5. ¿Cómo depurar la excepción en otro hilo?
- 6. Cómo depurar solo un hilo en Visual Studio
- 7. ¿Cómo depurar un único hilo en Visual Studio?
- 8. ¿Cómo puedo depurar fallas silenciosas en aplicaciones Java?
- 9. Puntero colgante
- 10. ¿Cómo puedo depurar AutoMapper.AutoMapperMappingException
- 11. Sockets Java: ¿puedo escribir un servidor TCP con un hilo?
- 12. ¿Cómo puedo depurar un Doclet en Eclipse?
- 13. ¿Cómo puedo depurar un script de Perl?
- 14. ¿Cómo puedo depurar un archivo MSBuild?
- 15. ¿Cómo reutilizar un hilo en Java?
- 16. ¿Cómo puedo depurar aplicaciones en Java Web Start (JNLP)?
- 17. Cómo depurar Java Swing Layouts
- 18. Cómo depurar un punto muerto en Java usando Eclipse
- 19. ¿Puedo depurar un ensamblado compilado?
- 20. Cómo puedo matar un hilo en python
- 21. ¿Puedo generar un hilo de un servlet?
- 22. Detener un hilo en Java?
- 23. ¿Cómo realizo un volcado de hilo con MONO?
- 24. C pregunta del puntero colgante
- 25. Cómo depurar ConcurrentModificationException?
- 26. matando un hilo en ejecución en java?
- 27. ¿Cómo saber qué hilo está bloqueando un archivo en Java?
- 28. ¿Cómo depurar las aplicaciones Java Web Start?
- 29. ¿Cómo depurar un threadpool en Visual Studio?
- 30. ¿Cómo puedo ejecutar un servicio en un hilo separado?
no es que Jim está pidiendo, Él está pidiendo para depurar approch –
@ user1348753, ver edit. – aviad
@aviad: Hice un 'kill -3' y cargué el javacore a Samurai. No había una tabla visual solo un informe de registro t.¿Cómo puedo rastrear el hilo de este informe? – Jim