실행 중인 JBoss 인스턴스에서 스레드 덤프를 어떻게 생성하고 분석합니까?

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

  •  09-06-2019
  •  | 
  •  

문제

실행 중인 JBoss 인스턴스에서 스레드 덤프를 어떻게 생성하고 분석합니까?

도움이 되었습니까?

해결책

약간 더 사용자 친화적인 JBoss 전용 방법이 있습니다:

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

이는 호스트 시스템에 직접 액세스할 수 없는 경우("kill"에 필요한) 특히 유용합니다.

다른 팁

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

...

"UNIX 플랫폼에서는 kill 명령을 사용하여 프로그램에 신호를 보낼 수 있습니다.이는 JVM에서 처리하는 종료 신호입니다.예를 들어, Solaris에서는 kill -QUIT process_id 명령을 사용할 수 있습니다. 여기서 process_id는 Java 프로그램의 프로세스 번호입니다.

또는 Java 프로그램이 시작된 창에 <ctrl>\ 키 시퀀스를 입력할 수 있습니다.이 신호를 보내면 JVM의 신호 처리기가 JVM 내부의 스레드 및 모니터에 대한 모든 정보를 재귀적으로 인쇄하도록 지시합니다.

...

"스레드 상태 결정

JVM 스택 추적의 스냅샷에서 다양한 상태의 다양한 스레드를 볼 수 있습니다.사용되는 키는 다음과 같습니다.

R 실행 중이거나 실행 가능한 스레드

S 중단된 스레드

조건 변수를 기다리는 CW 스레드

MW 스레드가 모니터 잠금을 기다리고 있습니다.

MS 스레드가 모니터 잠금을 기다리는 동안 일시중단되었습니다."

stacktrace 앱을 찾았습니다. 여기 특히 Java 앱이 명령줄에서 시작되지 않은 Windows 시스템에서 유용합니다.

Thread.getAllStackTraces() (Java 1.5부터)

두 가지 옵션:

옵션 1 JMX 콘솔을 사용하여 스레드 덤프 생성

스레드 덤프를 생성하려면 다음을 수행하십시오.

  1. JMXConsole을 엽니다(예: http://localhost:8080 )
  2. 로 이동 jboss.system:type=ServerInfo 엠빈(힌트: CTRL-F를 누르고 대화 상자에 type=ServerInfo를 입력하면 됩니다.)
  3. Server Info mbean에 대한 링크를 클릭하십시오.
  4. 라고 적힌 곳 아래로 이동하세요. listThreadDump
  5. 그것을 클릭하고 스레드 덤프를 얻으십시오

노트:

Internet Explorer를 사용하는 경우 다음을 사용해야 합니다. File > Save As 데이터를 텍스트 편집기에 복사하는 대신 출력을 저장합니다.어떤 이유로 Internet Explorer에서 텍스트를 복사하면 줄 바꿈이 복사되지 않고 모든 출력이 한 줄로 끝납니다.

옵션 2 Twiddle을 사용하여 스레드 덤프 생성

또는 twiddle을 사용하여 다음을 실행할 수 있습니다. listThreadDump() 메서드를 사용하여 반환된 HTML을 파일로 직접 파이프합니다.다음 명령줄을 사용하세요.

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

때로는 JBoss가 너무 많이 잠궈서 jmx-concole도 응답하지 않는 경우가 있습니다.이러한 경우 Linux에서는 kill -3을 사용하고 SendSignal Windows에서.

https://community.jboss.org/wiki/ThreadDumpJSP 페이지에는 JMX 없이 사용할 수 있는 독립형 자체 포함 threaddump.war 기능이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top