본문 바로가기
반응형

Heapdump 뜨는법 


1. USER_MEM_ARGS에 입력 (또는 JAVA_OPTS 으로 자바옵션을 WLS 기동 스크립트에 삽입)

"-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=[경로]"

"-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/u01/sy/MiddleWare/wls12214/user_projects/domains/logs/heapdump.log"


아웃오브메모리가 발생하면 자동으로 위 주소에 힙덤프를 생성한다.

2. Jmap 
jmap -dump:format=b,file=[FILE_NAME] [PID]
Ex. Jmap -dump:format=b, file=heapdump.hprof 8124

 

윈도우에선 ctrl+break 스레드덤퍼가 서버 stdout에서 생성됩니다

 

 

메모리 그자체를 가져오는거라서 만약 Heap이 10GB면 파일도 10GB짜리임 
-> 매우 큰 용량과 시간을 필요로 하기 대문에 WEB-WAS 구조일 때, WebServer를 내려서 WAS에 요청이 오지 않게 만든 뒤에 작업 해야한다.

 


 

ThreaDump 뜨는법

 

1. wlst 이용 (WLS 9이상에서 작동)

    1) ThreadDump 를 저장하고싶은 폴더 위치로 간다
    2) Wlst.sh 를 실행한다
    3) Connect("<username>", "<password>", "<URL ex.t3://192.168.100.38:7203.. >") 로 접속한다.
    4) Cd('Servers')
    5) Cd('<서버이름 ex.m1|AdminServer … >') 으로 서버명을 입력한다
    6) ThreadDump()
    7) Disconnect()
    8) Exit() 빠져나온다
    9) 폴더에 생긴 ThreadDump 확인

         

2. 웹로직 콘솔 이용
    1) 관리콘솔접속
    2) 서버 클릭
    3) 관측하고싶은 서버이름클릭
    4) 모니터링
    5) 스레드
    6) 덤프 스레드 스택으로 이동

3. kill 명령어 사용
   1) Kill -QUIT [pid]
   2) 아니면 kill -3 [pid]

728x90
반응형

한걸음 한걸음

개인적인 기록