Prefacio
Este artículo presenta principalmente las herramientas de manejo de fallas de las máquinas virtuales Java. Estas herramientas mencionadas en el artículo incluyen:
| nombre | Funciones principales |
| JPS | Herramienta de estado del proceso JVM Muestra todos los procesos de máquina virtual del punto de acceso en el sistema especificado. Generalmente anfitrión local |
| jstat | Herramienta de monitoreo de estadísticas de JVM, utilizada para recopilar datos operativos de todos los aspectos de la máquina virtual del punto de acceso |
| jinfo | Información de configuración para Java, visualizar información de configuración de la máquina virtual |
| jMAP | Mapa de memoria para Java, genera una instantánea de almacenamiento de memoria de una máquina virtual (archivo Heapdump) |
| jhat | El navegador de volcado JVM Heap se utiliza para analizar los archivos de HeapDump. Establece un servidor HTTP/HTML, lo que permite a los usuarios ver los resultados de análisis en el navegador. |
| chstack | Stack Trace para Java, muestra instantáneas de hilos de máquinas virtuales |
JPS: Herramienta de estado del proceso de la máquina virtual
La función de JPS es similar al comando PS en Unix/Liunx. Es solo que imprime el proceso en ejecución de la máquina virtual y muestra el nombre de la clase principal de ejecución de la máquina virtual y la ID de máquina virtual local de estos procesos (identificador de máquina virtual local, LVMID, generalmente el ID de proceso del sistema).
Formato de comando JPS:
JPS [Opciones] [HostID]
JPS puede consultar el estado de proceso de máquina virtual remota del servicio RMI a través del protocolo RMI, y Hostid es el nombre de host registrado en el registro RMI.
JPS Otras opciones comunes:
-Q solo salida lvmid, omitiendo el nombre de la clase principal;
-m parámetros de salida pasados a la función main () de la clase principal cuando se inicia el proceso de la máquina virtual;
-L Salida El nombre completo de la clase principal. Si el proceso ejecuta un paquete JAR, emita la ruta JAR;
-V Salida JVM Parámetros Cuando se inicia el proceso de la máquina virtual.
Muestra de comando JPS:
[root@localhost ~]# jps -l3914 org.zhangyoubao.payservice.app12180 sun.tools.jps.jps6913 org.zhangyoubao.userprofiler.app
JSTAT: Herramienta de monitoreo de estadísticas de máquinas virtuales
JSTAT es una herramienta utilizada para monitorear diversa información de estado operativo de máquinas virtuales. Puede mostrar los parámetros en ejecución como la carga de clase, la memoria gc.jit en procesos de máquina virtual locales o remotos.
Formato de comando jstat:
jstat [opción vMid [intervalo [s | ms] [count]]]
El intervalo y el recuento representan intervalos y tiempos de consulta. Si se omiten estos dos parámetros, significa que solo consulta una vez.
Otras opciones de uso común para JSTAT:
-La clase monitorea el número de cargas/descargas de clase y el tiempo de carga total del espacio;
-Compiler emite métodos, lento y otra información compilada por el compilador JIT;
-PrintCompilation El método que genera un método compilado JIT;
-gc monitorea el estado del montón Java;
-gccapacity El contenido de monitoreo es básicamente el mismo que -gc, pero la salida se centra en el espacio máximo/mínimo de cada área de Java;
-gcutil El contenido de monitoreo es básicamente el mismo que -gc, pero la salida se centra en el uso del espacio ocupa el 100%;
-gcause Al igual que la función -gcutil, la salida adicional causa el último GC;
-GcNew monitorea el estado de la nueva generación de GC;
-gcNewCapacity monitorea la nueva generación y emite lo mismo que -gccapacity;
-gcold monitorea el estado de GC en los ancianos;
-gcoldCapacity monitorea a los ancianos y genera lo mismo que -gcapacity;
-gcpermcapactiy monitorea la generación permanente (área de código), genera lo mismo que -gccapacity;
Muestra de comando jstat:
[root@localhost ~]# jstat -gc 6913 S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 34048.0 34048.0 0.0 3217.8 272640.0 171092.7 683264.0 168910.7 46872.0 28030 380.644 69 3.447 384.091
Jinfo: herramienta de información de configuración de Java
La función de Jinfo es ver y ajustar varios parámetros de la máquina virtual en tiempo real.
Formato de comando jinfo:
Jinfo [opción] PID
Otras opciones de uso común para Jinfo:
-flag name = value modificar parámetros
-Parámetro del parámetro de nombre de flag
Muestra de comando jinfo:
[root@localhost ~]# jinfo 6913attaching to process id 6913, por favor espere ... debugger adjunto con éxito. Compilador de servidor detectado. -Dserver.root =/usr/local/user_profiler -dcom.sun.management.jmxremote.port = 7003 -dcom.sun.management.jmxremote.ssl = false -dcom.sun.management.jmxremote.authenticate = false -verbose: gc -xx:+printgcdetails -Xx:+useconcmarksweepgc
JMAP: herramienta de mapeo de memoria Java
El comando JMAP se puede usar para producir instantáneas de almacenamiento de almacenamiento (archivos de volcado). También puede verificar los detalles de Finalize Queue (cola de autoevaluación), montón Java y área de código.
Formato de comando JMAP:
JMAP [opción] VMID
Otras opciones de uso común para JMAP:
-Dump genera una instantánea del almacenamiento de montón Java. Formato: -dump: [live,] format = b, file = <silename>;
-FinalizerInfo muestra un objeto en f-ceaue que está esperando que el fenómeno finalizador ejecute el método finalizar;
-HeAP muestra la información detallada del montón Java, como qué tipo de reciclador se utiliza, configuración de parámetros, estado generacional esperando;
-Histo muestra estadísticas de objetos en el montón, incluidas clases, libros de instancias y capacidad total;
-PermStat use classloader como el portal estadístico para mostrar información de memoria de generación permanente;
-F Cuando la opción de montaje de proceso de la máquina virtual no responde, puede usar esta opción para forzar una instantánea de volcado.
Muestra de comando JMAP:
[root@localhost ~] #jmap -histo 6913 | head -20 num #instances #bytes name de clase ---------------------------------------------- 1: 1864966 113459432 [C 2: 201846 49201192 [b 3: 1597065 38329560 java.lang.lang. 15037056 org.zhangyoubao.thriftdef.userusefulinfo 5: 47104 11072048 [i 6: 268631 8596192 java.util.hashmap $ entrada 7: 48812 7451760 <Sonstodklass> 8: 100683 644371222222 com.mysql.jdbc.ConnectionPropertiesimpl $ booleanConnectionProperty 9: 48812 6257856 <Methodklass> 10: 4230 5271640 <ConstantPoolklass> 11: 159491 5103712 java.util.hashtable $ entry 12: 12026 48090904040 org.zhangyoubao.common.cache.adv.node 13: 127027 4064864 java.util.concurrent.concurrenthashmap $ hashentry 14: 230433 3686928 java.lang.integer 15: 3765 3049824 <NystantPoolCacheChekeCheklss> 16171204120412041204120T com.mysql.jdbc.field 17: 4230 2943840 <ScanceKlassKlass>
donde [C=char[],[B=byte[],[S=short[],[I=int[],[[I=int[][] .
JHAT: Herramienta de análisis de instantáneas de transferencia de montón de máquinas virtuales
El comando JHAT se usa junto con JMAP y se usa para analizar los archivos de volcado generados por JMAP. JHAT tiene un servidor MINI HTTP/HTML incorporado. Después de los resultados del análisis del archivo de volcado generado se pueden ver en el navegador.
formato de comando jhat:
nombre de archivo JMAP
Muestra de comando jhat:
[root@localhost ~]# jhat html_intercept_server.dump lectura de html_intercept_server.dump ... archivo de volcado creado el miércoles 23 de noviembre 13:05:33 CST 2016 Snapshot Read, resolución ... Resolución de 203681 Objetos ... Chasing referencias, espere 40 dots .................. Eliminando las referencias ............. ... Snapshot. El servidor en el puerto 7000Server está listo.
Jstack: herramienta de rastreo de pila de hilos Java
Jstack se usa para generar una instantánea de subprocesos de la hora actual de la máquina virtual. Las instantáneas de subprocesos son el plan de pila de métodos que se está ejecutando cada hilo de la máquina virtual actual. El objetivo principal de generar instantáneas de hilo es localizar las razones por las cuales el hilo se detiene durante mucho tiempo. Cuando el hilo se detenga, use Jstack para ver qué hacen los hilos que no responden en segundo plano o qué recursos están esperando.
Formato de comando jstack:
jstack [opción] vmid
Jstack otras opciones:
-F Cuando no se responde la solicitud de salida normalmente, obliga a la salida de la pila de subprocesos;
-L muestra información adicional sobre el bloqueo además de mostrar la pila;
-M Si se llama un método local, se puede mostrar la pila de C/C ++.
Muestra de comando jstack:
[root@localhost ~]# jstack 29577 | head -202016-11-23 12: 58: 23full hilo volcado Openjdk Server VM (24.91-B01 Modo mixto): "Pool-1-Thread-7261" Prio = 10 Tid = 0x0893a400 Nid = 0x6B0D esperando en condiciones [0x652Ad000] java.lang.thread.state: timed_waiting (estacionamiento) en sun.misc.unsafe.park (método nativo) - estacionamiento para esperar <0x75b5b400> (un java.util.concurrent.synchroonqueuqueue $ transferido) en java.util.concurrent.locks.locksupport.parknanos (locksupport.java:226) en java.util.concurrent.synchronousqueue $ transferstack.awaitfulfill (synchonousqueue.Java:460) AT java.util.concurrent.synchronousqueue $ transferstack.transfer (synchronousqueue.java:359) en java.util.concurrent.synchroonqueuqueue.poll (synchroonqueue.java:942) AT java.util.concurrent.threadpoolexecutor.getTask (threadpoolexecutor.java:1068) en java.util.concurrent.threadpoolexecutor.runworker (threadpoolexecutor.java:1130) AT java.util.concurrent.threadpoolexecutor $ trabajador.run (threadpoolexecutor.java:615) en java.lang.thread.run (hild.java:745) "Service_hot_lscs-0" Daemon Prio = 10 tid = 0x6982dc00 NID = 0x6aeb esperando a la condición de ON java.lang.thread.state: timed_waiting (durmiendo) en java.lang.thread.sleep (método nativo) en org.zhangyoubao.video.client.runner.simplevideorunner.dowork (simplyVidEorNUNNER.Java:150)
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo sea de ayuda para su estudio o trabajo. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse.