java heap/thread dump 얻기

2021-12-03
  • dump
  • java
  • 개발서버에 tomcat 이 응답을 안하는 현상.

    로그 좀 보고 메트릭을 봤는데 도통 알수가 없었는데..

    팀원분이 바로 OOM 인걸 찾으시고 heap dump 분석을 하셔서 문제를 해결.

    대단하당.. 나도 따라해봐야징..

    catalina log 에 OOM 이라고 뜬걸 안까봤었다.. ㅠ,ㅠ 아무튼

    # java process id 확인
    $ ps -ef | grep tomcat
    # 또는
    $ ps -ef | grep java
    
    # heap dump 를 받자
    $ jmap -dump:format=b,file=dump-20211202213000.hprof ${pid}
    
    # thread dump 를 받자
    $ jstack ${pid}
    
    # heap memory 정보 확인
    $ jmap -heap ${pid}
    
    # dump classloader statistics
    $ jmap -clstats PID
    

    MAT 로 분석하면 된다. 근데 분석을 어떻게할지 잘 모르겠당 ㅋ.ㅋ

    leak report 받으니까 문제가 있는 class 를 바로 알려주던뎅 ㅠ,ㅠ?

    heap dump 파일이 클 경우, 파일이 안열린다. 설정 변경으로 해결

    # ${MAT_HOME}/MemoryAnalyzer.ini
    -vmargs
    #-Xmx1024m
    -Xms6g
    -Xmx6g
    

    참고