Prefácio
Este artigo apresenta principalmente as ferramentas de manuseio de falhas das máquinas virtuais Java. Essas ferramentas mencionadas no artigo incluem:
| nome | Funções principais |
| JPS | Ferramenta de status de processo da JVM, exibe todos os processos de máquina virtual do ponto de acesso no sistema especificado. Geralmente anfitrião local |
| jstat | Ferramenta de monitoramento de estatísticas da JVM, usada para coletar dados operacionais de todos os aspectos da máquina virtual do ponto de acesso |
| Jinfo | Informações de configuração para Java, exibir informações de configuração da máquina virtual |
| JMAP | Mapa de memória para Java, gera instantâneo de armazenamento de memória de uma máquina virtual (arquivo heapdump) |
| Jhat | O JVM Heap Dump navegador é usado para analisar arquivos HeapDump. Ele estabelece um servidor HTTP/HTML, permitindo que os usuários visualizem os resultados da análise no navegador. |
| jstack | Stack Trace para Java, exibe instantâneos de threads de máquinas virtuais |
JPS: Ferramenta de status do processo da máquina virtual
A função do JPS é semelhante ao comando PS no Unix/liunx. É apenas que ele imprime o processo de máquina virtual em execução e exibe o nome da classe principal de execução da máquina virtual e o ID exclusivo local da máquina virtual desses processos (identificador local de máquina virtual, LVMID, geralmente o ID do processo do sistema).
Formato de comando JPS:
JPS [Opções] [HostID]
Os JPs podem consultar o status do processo remoto da máquina virtual do serviço RMI através do protocolo RMI, e o HostID é o nome do host registrado no registro RMI.
JPS Outras opções comuns:
-Q Somente a saída lvmid, omitindo o nome da classe principal;
-m Parâmetros de saída passados para a função Main () da classe principal quando o processo da máquina virtual é iniciado;
-l Saída o nome completo da classe principal. Se o processo executar um pacote de jar, produza o caminho JAR;
-v Parâmetros de JVM de saída de saída Quando o processo da máquina virtual inicia.
Amostra de comando JPS:
[root@localhost ~]# jps -l3914 org.zhangyoubao.PayService.App12180 Sun.tools.jps.jps6913 org.zhangyoubao.userprofiler.app
JSTAT: Ferramenta de monitoramento de estatísticas da máquina virtual
O JSTAT é uma ferramenta usada para monitorar várias informações de status operacional de máquinas virtuais. Ele pode exibir parâmetros de execução, como carga de classe, memória gc.jit em processos de máquina virtual local ou remoto.
formato de comando jstat:
jstat [opção vmid [intervalo [s | ms] [contagem]]]
Intervalo e contagem representam intervalos e horários de consulta. Se esses dois parâmetros forem omitidos, isso significa que apenas consulta uma vez.
Outras opções comumente usadas para Jstat:
-Class Monitore o número de carga/descarga de classe e o tempo total de carregamento do espaço;
-Compiler produz métodos, demorados e outras informações compiladas pelo compilador JIT;
-PrintCompilation O método que gera um método compilado JIT;
-GC monitora o status da pilha Java;
-GCCAPacity O conteúdo de monitoramento é basicamente o mesmo que -GC, mas a saída se concentra no espaço máximo/mínimo de cada área de Java;
-Gcutil O conteúdo de monitoramento é basicamente o mesmo que -GC, mas a saída se concentra no uso do espaço ocupa 100%;
-GCCausa Como a função -gcutil, a saída adicional causa o último GC;
-GCNew monitora o status da nova geração de GCs;
-GCNewCapacity monitora a nova geração e sai da mesma forma que -GCCapacity;
-Gcold monitora o status GC em idosos;
-GColdCapacity monitora os idosos e produz o mesmo que -GCCAPACACIDADE;
-gcpermcapactiy monitora a geração permanente (área de código), produz a mesma que -GCCapacity;
amostra de comando jstat:
[raiz@localhost ~]# JSTAT -GC 6913 S0C S1C S0U S1U EC EU OO PC PU YGC YGCT FGC FGCT GCT 34048.0 34048.0 0,0 3217.8 272640.0 171092.72.262. 37857 380.644 69 3.447 384.091
Jinfo: ferramenta de informação de configuração Java
A função do Jinfo é visualizar e ajustar vários parâmetros da máquina virtual em tempo real.
Formato de comando Jinfo:
Jinfo [Opção] PID
Outras opções comumente usadas para Jinfo:
-Nome flag = Modificar os parâmetros
-MARETRO DOMETRO DE NOME DO FLAG
Amostra Jinfo Command:
[root@localhost ~]# Jinfo 6913Taching para processar ID 6913, por favor, aguarde ... o Debugger anexado com sucesso.Server Compiler detectado.jvm A versão é 24.91 -B01Java Propriedades do sistema: ... VM Flags: -xms1000m -xmx1000m -dconf/flags/uss1000m -xmx1000m -dconf/finga -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:+PrintGCDateStamps -Xx:+useConcmarksweepGC
JMAP: ferramenta de mapeamento de memória java
O comando jmap pode ser usado para produzir instantâneos de armazenamento de heap (arquivos de despejo). Ele também pode verificar os detalhes da fila finalizada (fila de autoveres), heap java e área de código.
formato de comando jmap:
jmap [opção] vmid
Outras opções comumente usadas para JMAP:
-Dump gera um instantâneo do armazenamento de heap java. Formato: -dump: [vive,] formato = b, file = <FileName>;
-FinalizerIrinfo exibe um objeto no F-QUUE que está aguardando o fenômeno do finalizador executar o método finalizado;
-Heap exibe as informações detalhadas da pilha Java, como qual tipo de reciclador é usado, configuração de parâmetros, status geracional esperando;
-Histo exibe estatísticas de objetos na pilha, incluindo classes, livros de instância e capacidade total;
-Permstat Use ClassLoader como o portal estatístico para exibir informações de memória de geração permanente;
-F Quando a opção de dump de processo do processo da máquina virtual não responde, você pode usar esta opção para forçar um instantâneo de despejo.
amostra de comando jmap:
[raiz@localhost ~] #jmap -histo 6913 | cabeça -20 num #Instances #Bytes Nome da classe --------------------------------------------------- 1: 1864966 113459432 [C 2: 201846 491192 [B3: 1597065: 3832960 15037056 org.zhangyoubao.thriftdef.userusefulinfo 5: 47104 11072048 [i 6: 268631 8596192 Java.util.hashmap $ Entrada 7: 4812 7451760 <ConstMethodklls> 8: 48812 7451760 <Constmethklls> com.mysql.jdbc.connectionPropertiesImpl $ booleeanConnectionProperty 9: 48812 6257856 <Chodklass> 10: 4230 5271640 <Constantpoolklass> 11: 159491 5103712 Java.util.HashTable org.zhangyoubao.common.cache.adv.node 13: 127027 4064864 java.util.concurrent.ConcurrentHashmap $ hashentry 14: 230433 3686928 com.mysql.jdbc.field 17: 4230 2943840 <Instanceklassklass>
onde [C=char[],[B=byte[],[S=short[],[I=int[],[[I=int[][] .
JHAT: Ferramenta de análise de instantâneos de transferência de transferência de máquina virtual
O comando jhat é usado em conjunto com o JMAP e é usado para analisar arquivos de despejo gerados pelo JMAP. O JHAT possui um servidor Mini HTTP/HTML embutido. Após os resultados da análise do arquivo de despejo gerado, pode ser visualizado no navegador.
Jhat Comando Formato:
JMAP FILENAME
Jhat Command Amostra:
[root@localhost ~]# jhat html_intercept_server.dump Reading from html_intercept_server.dump ... Arquivo de despejo criado Wed 23 13:05:33 CST 2016SnaPShot Read, resolução ... resolvendo 203681 ... DuSing Referências, expectativa 40 pontos ....... O servidor HTTP na porta 7000Server está pronto.
Jstack: Java Thread Stack Trace Tool
O JSTACK é usado para gerar um instantâneo de thread do horário atual da máquina virtual. Os instantâneos de threads são o plano de pilha de métodos que cada encadeamento da máquina virtual atual está executando. O principal objetivo de gerar instantâneos de threads é localizar as razões pelas quais o thread é pausado por um longo tempo. Quando o thread faz uma pausa, use o JSTack para ver o que os threads que não responderam fazem em segundo plano ou quais recursos estão aguardando.
formato de comando jstack:
jstack [opção] vmid
Jstack Outras opções:
-F Quando a solicitação de saída normalmente não for respondida, force a pilha de thread a ser produzida;
-l Exibir informações adicionais sobre o bloqueio, além de exibir a pilha;
-m Se um método local for chamado, a pilha de C/C ++ pode ser exibida.
amostra de comando jstack:
[raiz@localhost ~]# jstack 29577 | Cabeça -202016-11-23 12: 58: 23full Thread Dump OpenJdk Server VM (24,91-b01 Modo misto): "Pool-1-thread-7261" "Coulistic (10x0893a400 nid] java.lang.thread.state: timed_waiting (estacionamento) em sun.misc.unsfe.park (método nativo) - estacionamento para aguardar <0x75b5b400> (a java.util.Concurrent.SyNChronsqueue $ transferestack) java.util.concurrent.locks.locksupport.parknanos (locksupport.java:226) em java.util.concurrent.synchronsquosqueue $ transferstack.awaitfill (syncrosousqueue.java:460) em java.util.concurrent.synchronsQueue $ transferstack.Transfer (syncronsoSqueue.java:359) em java.util.concurrent.synchronsqueue.poll (syncroousqueue.java:942) java.util.concurrent.threadpoolexecutor.gettask (threadpoolexecutor.java:1068) em java.util.concurrent.threadpoolexecutor.runworker (threadpoolexecutor.java:1130) em java.util.concurrent.threadpoolExecutor $ trabalhador.run (threadpoolExecutor.java:615) em java.lang.thread.run (thread.java:745) "service_hot_lscs-0" prio = 10 tram java.lang.thread.State: timed_waiting (dormindo) em java.lang.thread.sleep (método nativo) em org.zhangyoubao.video.client.runner.simplevideorunner.dowork (SimpleVideorunner.Java:150)
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo seja de ajuda para o seu estudo ou trabalho. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar.