Estoy usando el comando kill -3
para ver el volcado de hebras de la JVM en Unix. Pero, ¿dónde puedo encontrar el resultado de este comando kill
? ¡¡Estoy perdido!!kill -3 para obtener el volcado del hilo java
Respuesta
Puede usar alternativamente jstack (Incluido con JDK) para tomar un volcado de hilo y escribir el resultado donde lo desee. ¿Eso no está disponible en un entorno Unix?
jstack PID > outfile
Gracias por eso. ¡Absolutamente! Sí, puedo usar esto jstack PID> archivo de salida generará el volcado de hilo en ese período de tiempo particular. ¿No es así? – javanerd
Sí, en el momento en que se ejecuta. También puede especificar -l (L minúscula) para una lista larga que imprime información de bloqueo adicional –
Hasta que el comando jstack falle consistentemente debido a "No se puede deducir el tipo de hilo de la dirección" ;-( – noahlz
En el mismo lugar donde se coloca la extensión estándar de la JVM. Si tiene un servidor Tomcat, este será el archivo catalina_(date).out
.
El volcado de hilo se escribe en el sistema fuera de la máquina virtual en la que ejecutó kill -3. Si está redirigiendo la salida de la consola de la JVM a un archivo, el volcado de la cadena estará en ese archivo. Si la JVM se está ejecutando en una consola abierta, entonces el volcado de la cadena se mostrará en su consola.
Hay una forma de redirigir la salida de volcado de subprocesos de JVM a un archivo separado. Ver en mi respuesta. – Vadzim
No es una forma de redirigir JVM salida de volcado de hilo en señal de interrupción al archivo separado con LogVMOutput diagnostic option:
-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=jvm.log
Técnicamente, esto no "redirige" la salida de volcado de hilo. Activa el registro de JVM en jvm.log (que incluye salida de volcado de hilo) pero kill -QUIT seguirá volcando al stdout (aswell) del proceso. Subida de la descripción de las opciones de JVM oscuras :) – sqweek
En Jboss se pueden realizar las siguientes
nohup $JBOSS_HOME/bin/run.sh -c yourinstancename $JBOSS_OPTS >> console-$(date +%Y%m%d).out 2>&1 < /dev/null &
kill -3 <java_pid>
Esto redirigirá su salida/threadump a la consola de archivos especificada en el comando anterior.
Al usar kill -3 se debería ver el volcado de hilo en la salida estándar. La mayoría de los servidores de aplicaciones escriben el resultado estándar en un archivo separado. Deberías encontrarlo allí cuando uses kill -3. Hay varias maneras de obtener volcados de hilo:
- Kill -3: Da salida a la salida estándar.
- Si se tiene acceso a la ventana de la consola donde se está ejecutando el servidor, se puede usar la combinación de teclas Ctrl + Break para generar el seguimiento de la pila en la salida estándar.
- Para hotspot VM también podemos usar el comando jstack para generar un volcado de hilo. Es una parte del JDK. Sintaxis es la siguiente: Uso: jstack [-l] (para conectarse a un proceso en ejecución) jstack -F [-m] [-l] (para conectarse a un proceso bloqueado)
- Para JRockit JVM podemos utilizar jRCMD de comandos que viene con el JDK sintaxis: jrcmd [[]] [-l] [-f archivo] [-p] -h]
- encontrar el ID del proceso [PS ID]
- Ejecutar jcmd [PS ID] Thread.print
Con Java 8 en imagen, jcmd
es el enfoque preferido.
jcmd <PID> Thread.print
siguiente es el fragmento de Oracle documentation:
La liberación de JDK de Java introducido 8 Control de la Misión, Java registradores de vuelo, y la utilidad jcmd para el diagnóstico de problemas con aplicaciones Java JVM y. Se sugiere utilizar la utilidad más reciente, jcmd en lugar de la utilidad jstack anterior para diagnósticos mejorados y una sobrecarga de rendimiento reducida.
Sin embargo, enviar esto con la aplicación puede implicar una licencia que no estoy seguro.
Desafortunadamente 'jcmd' no se puede conectar al proceso de servicio de Windows con' com.sun.tools.attach.AttachNotSupportedException: memoria insuficiente o privilegios insuficientes para adjuntar' mientras 'jstack -F' tiene éxito: https://stackoverflow.com/questions/1197912/cant-debug-java-windows-services-with-jhat-jps-jstack/47723393#47723393 – Vadzim
Los pasos que debe seguir si desea que el vertedero de hilo de su proceso de Java autónomas
Paso 1: Obtener el identificador de proceso para el script de shell llamar al programa Java
linux$ ps -aef | grep "runABCD"
user1 **8535** 4369 0 Mar 25 ? 0:00 /bin/csh /home/user1/runABCD.sh
user1 17796 17372 0 08:15:41 pts/49 0:00 grep runABCD
Paso 2: Obtenga la identificación del proceso para el niño invocada por el runABCD. Use el PID anterior para obtener los niños.
linux$ ps -aef | grep **8535**
user1 **8536** 8535 0 Mar 25 ? 126:38 /apps/java/jdk/sun4/SunOS5/1.6.0_16/bin/java -cp /home/user1/XYZServer
user1 8535 4369 0 Mar 25 ? 0:00 /bin/csh /home/user1/runABCD.sh
user1 17977 17372 0 08:15:49 pts/49 0:00 grep 8535
Paso 3: Obtener el jstack para el proceso particular. Obtenga la identificación del proceso de su proceso XYSServer. es decir 8536
linux$ jstack **8536** > threadDump.log
- 1. Volcado de hilo Java: BLOQUEADO hilo sin "esperar para bloquear ..."
- 2. Crear un volcado de hilo en OpenVMS
- 3. Cómo recuperar remotamente un volcado de hilo java
- 4. Obtener el ID del hilo
- 5. Genera un volcado de hilo Java sin reiniciar.
- 6. ¿Cómo funciona "kill -QUIT process_id"?
- 7. Cuál es el significado de "volcado de hilo"
- 8. Solicitar el volcado del he va en java (volcado del núcleo) desde la aplicación
- 9. interpretar la línea de hilo de volcado
- 10. ¿Cuál es el hilo del despachador de señales java?
- 11. C#: cómo obtener la longitud del hilo en el hilo []
- 12. Permisos de volcado del montón Java
- 13. Método del hilo actual java
- 14. Obtener el volcado del heap desde una aplicación remota en Java usando JVisualVM
- 15. Hilo estacionado de Java
- 16. Prevenir la aplicación C# del proceso kill
- 17. gdb cómo obtener el nombre del hilo mostrado
- 18. Ubicación de volcado de subprocesos JVM
- 19. Obtener todos los elementos del hilo Cola
- 20. hilo mapa seguro para java
- 21. ¿Herramienta para estropear el tiempo del hilo?
- 22. Kill Thread in Pthread Library
- 23. Herramientas para supervisar la ejecución del hilo java
- 24. ¿Cómo puedo ver el uso de memoria, volcado de hilo para programas Java, desde la línea de comandos?
- 25. obteniendo stacktrace del volcado del núcleo
- 26. ¿Incluye un volcado del heap Java pilas de hilos
- 27. Cómo analizar el volcado del núcleo
- 28. Temporizador en el hilo de Java
- 29. C# Kill todas las discusiones
- 30. ¿Cómo medir el tiempo de ejecución del hilo de Java?
¿Qué proceso estás matando? ¿Es un servidor de aplicaciones J2EE? Si es el caso, debe encontrar el rastro de pila en la salida estándar. –
Estoy matando a un proceso que ejecuta la clase Java – javanerd
No debe escribir el volcado de subprocesos en la consola. ya que la clase Java tiene una consola como estándar – javanerd