Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
ps -ef | grep HIVESEVER2 로 프로세스ID를 찾은 다음에 아래의 1,2는 시간을 두고 여러 번 수행해서 전후를 비교해야 원인 파악하기가 수월하다.
(예, 프로세스ID가 72787인 경우)
1. sudo -u hive /usr/java/jdk/bin/jstack -l 72787 >> jstack.out
2. sudo -u hive pstack 72787 >> pstack.out
3. sudo -u hive /usr/java/jdk/bin/jmap -dump:live,format=b,file=jmap.hprof 72787
Dumping heap to /tmp/hsperfdata_hive/jmap.hprof ...
Heap dump file created
1. jstack
1) 자바 Thread dump확인시 사용.
2) jstack [PID] : 프로세스 번호를 넣어 실행한다. ( -l 옵션을 사용하면 각 Thread의 Lock정보까지 획득.)
3) thread dump내용중 prio(thread priority)는 1부터 10까지 있으며, thread의 우선순위를 가진다.
2. pstack
1) pstack은 리눅스 OS레벨의 Thread덤프를 제공한다.
3. Thread status
1) NEW : Thread를 생성하였지만 아직 시작하지 않은 상태.
2) RUNNABLE : 실행중인 상태
3) BLOCKED : 다른 Thread가 소유하고 있는 Monitor를 소유하기 위하여 대기 중인 상태.
(Monitor? 각 자바객체가 소유하고 있는 공간으로 한번에 하나의 Thread만이 접근할 수 있다.)
4) WAITING : Object.wait(), Thread.join()등의 메서드에 의해 대기중인 상태.
5) TIMED_WAITING : Object.wait(), Thread.join(), Thread.sleep()등의 메소드에 의해 대기중인상태
(WAITING과 차이점은 최대 대기시간이 지정됨.)
6) TERMINATED : 실행을 종료하였거나 Exception이 발생한 상태.