Como você gera e analisa um dump de thread de uma instância do JBoss em execução?

StackOverflow https://stackoverflow.com/questions/59787

  •  09-06-2019
  •  | 
  •  

Pergunta

Como você gera e analisa um dump de thread de uma instância do JBoss em execução?

Foi útil?

Solução

Existe um método específico do JBoss que é um pouco mais fácil de usar:

http://community.jboss.org/wiki/GenerateAThreadDumpWithTheJMXConsole

Isso é especialmente útil quando você não tem acesso direto à máquina host (o que seria necessário para "matar").

Outras dicas

http://java.sun.com/developer/technicalArticles/Programming/Stacktrace/

...

"Em plataformas UNIX você pode enviar um sinal para um programa usando o comando kill.Este é o sinal de encerramento, que é tratado pela JVM.Por exemplo, no Solaris você pode usar o comando kill -QUIT process_id, onde process_id é o número do processo do seu programa Java.

Alternativamente, você pode inserir a sequência de teclas <ctrl>\ na janela onde o programa Java foi iniciado.O envio deste sinal instrui um manipulador de sinal na JVM a imprimir recursivamente todas as informações nos threads e monitores dentro da JVM.

...

"Determinando os estados do thread

Você verá muitos threads diferentes em muitos estados diferentes em um snapshot de um rastreamento de pilha da JVM.A chave usada é:

R Thread em execução ou executável

S Fio suspenso

Thread CW aguardando uma variável de condição

MW Thread aguardando um bloqueio de monitor

MS Thread suspenso aguardando um bloqueio de monitor"

O aplicativo stacktrace encontrado aqui também é útil, especialmente em máquinas Windows quando o aplicativo Java não é iniciado a partir da linha de comando.

Thread.getAllStackTraces() (desde Java 1.5)

Duas opções:

OPÇÃO 1 Gere um dump de thread usando o console JMX

Para gerar um dump de thread:

  1. Abra o JMXConsole (por exemplo: http://localhost:8080 )
  2. Navegar para jboss.system:type=ServerInfo mbean (dica: você provavelmente pode apenas CTRL-F e inserir type=ServerInfo na caixa de diálogo)
  3. Clique no link para o Server Info mbean.
  4. Navegue até a parte inferior onde diz listThreadDump
  5. Clique nele e obtenha seu despejo de thread

Notas:

Se você estiver usando o Internet Explorer, você deve usar File > Save As para salvar a saída em vez de copiar os dados para um editor de texto.Por algum motivo, quando você copia o texto do Internet Explorer, as quebras de linha não são copiadas e toda a saída termina em uma única linha.

OPÇÃO 2 Gere um dump de thread usando Twiddle

Alternativamente, você pode usar o twiddle para executar o listThreadDump() método e canalize o HTML retornado diretamente para o arquivo.Use esta linha de comando:

<JBOSS_HOME>/bin/twiddle invoke "jboss.system:type=ServerInfo" listThreadDump > threads.html

Às vezes, o JBoss trava tanto que até o jmx-concole não responde.Nesse caso, use kill -3 no Linux e EnviarSinal no Windows.

https://community.jboss.org/wiki/ThreadDumpJSP A página apresenta threaddump.war autônomo e independente que pode ser usado sem JMX.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top