자바 종합 분석 도구 arthas
중국 알리바바에서 만든 자바 분석도구
아서스 주요 기능
- 클래스가 로딩되었는지, 어디에서 로딩되었는지 확인 가능
- 코드가 예상한 대로 실행되는지 확인하기 위한 클래스 역 컴파일 기능
- 클래스 로더의 통계 확인
- 메서드 호출 상세 정보
- 지정한 메서드가 호출되었을 때의 스택 추적 정보
- 느린 하위 호출을 찾기 위한 메서드 호출 추적
- 메서드 호출 통계
아서스 주요 명령어
- 전반적인 현황을 확인하는 명령어들 : dashboard, thread, jvm, sysprop, sysenv
- 특정 스레드/클래스/파일 등 분석하기 위한 명령어들 : getstatic, ognl, sc, sm, dump, jad, classloader, mc, redefine, monitor, watch, trace, stack, tt
- 도구들 : pwd, options, help, shutdown
dashboard
jvm에 전반적인 상황을 확인
- 가장 상단에 스레드 상태
- 중간에 메모리
- 가장 밑에는 시스템의 전반적인 상황
thread
스레드의 전반적인 통계정보를 나타낸다.
- RUNNALBE이 높은 경우 : 정상적인 상태일수 있지만 너무 비정상적으로 높을 경우 RUNNALBE인 스레드를 확인하여 CPU사용량이 높을것을 찾아내야 한다.
- BLOCKED가 높은 경우 : 어디선가 락을 잡고 있는것이 있다 찾아야 된다.
- WAITING이나 TIMED_WAITING이 높은경우 : 대다수 스레드가 대기상태니 문제가 되지 않는다
jvm
jvm 상태 확인
sc/sm
sc 명령은 search class 약자 sm 명령은 search method의 약자
monitor
monitor 명령은 특정 메서드를 추적하는 용도로 사용 기본적으로 통계를 제공하는 주기가 120초
stack/trace
stack 명령은 클래스의 메서드간에 호출관계를 확인
trace 지정 메서드를 실행할때의 스택 정보를 실시간으로 보고자 할때
TT
tt는 timetunnel의 약자 특정 클래스의 메서드가 정상적으로 잘 실행이 되고 있는지에 대한 정보들을 확인하기 위한 용도