본문 바로가기
FullStack/21. Java

[JAVA] Thread Dump 만들기

by nakanara 2020. 8. 20.
반응형

Java Thread Dump

애플리케이션이 갑자기 먹통이 되거나, 속도가 느려질 때 Java Thread Dump 확인하기.

프로세스 pid를 찾은 후 pid로 확인이 가능

$ ps -ef | grep tomcat  
$ jstack PID 
"main" #1 prio=5 os_prio=0 tid=0x00007f27f400f000 nid=0x9 runnable [0x00007f27fd741000]
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
        at java.net.ServerSocket.implAccept(ServerSocket.java:545)
        at java.net.ServerSocket.accept(ServerSocket.java:513)
        at org.apache.catalina.core.StandardServer.await(StandardServer.java:466)
        at org.apache.catalina.startup.Catalina.await(Catalina.java:776)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:722)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)

"VM Thread" os_prio=0 tid=0x00007f27f4143800 nid=0xe runnable

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f27f4024000 nid=0xa runnable

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f27f4026000 nid=0xb runnable

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f27f4027800 nid=0xc runnable

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f27f4029800 nid=0xd runnable

"VM Periodic Task Thread" os_prio=0 tid=0x00007f27f4266800 nid=0x1c waiting on condition

JNI global references: 632

윈도우에서 PID 찾기, (jstack 사용)

JPS 명령어를 이용하여 PID를 찾을 수 있다.

JPS: Java 프로세스 상태 확인

옵션
-q 클래스 이름, jar 파일 명, main 메서드 전달된 인자만 표시
-m main 메서드에 전달도니 인자를 표시
-l 어플리케이션 main 클래스 전체 패키지 이름 또는 jar 파일의 전체 경로
-v jvm에 전달된 인자 표시
-V 클래스 이름, JAR 파일 명, main 전달 인자 모두 생략

$ jps -v 

 

반응형