티스토리 뷰

분석방법??


  1. Heap Dump 분석
    - 정상작동중 서버와(Account), Pool Live 서버의 Heap Dump를 생성하여 비교
    - 서버의 재시작 후 Heap Dump와 재시작후 며칠이 지난 상태의 Dump 비교
    - 덤프방법 : # jmap -dump:format=b,file=<fileName> <PID> 
    - 분석도구 : eclipse-MemoryAnalyzer


  2. 위와 같은 결과를 확인할 수 있는데 결론적으로 메모리 점유율에 따른 오브젝트에 대한 분석을 통해선 정확한 원인을 파악하기 힘들었다. 



  3. JVM GC 관련 모니터링
    - 체크방법 : # jstat -옵션 PID 반복시간(ms) 반복횟수

    1) 1번서버
    - Memory 16G.
    - 자바옵션으로 메모리 설정하지 않음
    - 아래는 GC 현황에 대한 가용률 대한 정보를 %로 확인하는 정보

FGC가 자주 일어나는것을 확인할 수 있다. 시스템 사양이 워낙 좋아 메모리튜닝을 하지 않아도 문제가 되지 않지만, 
왠만하면 메모리에 대한 설정을 해주는것이 바람직하다. 메모리 튜닝에 대한것은 나중에 따로 정리할것.

2) 2번서버
- Memory 16G
- 자바옵션 -Xms6144m -Xmx10240m -XX:NewSize=512m -XX:MaxNewSize=1024m  (Heap 사이즈와 New 영역에대해서만 정의)

힙사이즈에 대해 정의하고 New 영역에 대해 정의를 했더니 YGC와 FGC의 차이를 확인 할 수 있다. 
한가지, Metaspace 영역에 대한 가용률이 98인데, 이부분에 대한 정리를 메뮤리 튜닝과 같이 정리할 것. 

어쨌든 결론은 Pool 서버에선 GC동작에 대해선 특별한 문제점을 발견하기 힘들었다. 


3. Thread Dump 분석

- 정상작동 서버의 Thread dump 와 Pool 서버의 Thread dump 비교
- 체크방법 : # jstack PID 또는 visualVM 툴 사용



분석도구??

1. Memory Analyzer

  • heapdump 파일을 분석하여, 문제가 될만한 요소를 찾아 그래픽으로 표현해주는 도구
  • 사용법은 분석하고자 하는 서버의 heapdump파일을 받아 툴에서 open 해주면 됨.


  • http://www.eclipse.org/mat/
  • 분석하고자 하는 서버의 heapdump 파일만 준비

 

2. VisualVM

  • 서버의 cpu, memory, thread 현황등을 그래픽으로로 표현해주는 도구
  • GC현황 모니터링 가능
  • heapdump, threaddump 기능 지원
  • thread의 현황 모니터링 가능
  • 원격의 서버 모니터링 지원
  • 사용법은 tomcat 실행시키면 visualvm에서 자동으로 프로세스를 감지하여 그래프로 보여줌.
  • https://visualvm.java.net/

 

 

'프로그램 > JAVA' 카테고리의 다른 글

톰캣 common-dbcp  (0) 2016.10.18
Troubleshooting 스레드사용법  (0) 2016.10.12
자바 메모리 튜닝  (0) 2016.10.12
Spring Controller required 속성  (0) 2016.07.21
자바 버전 관리 및 운영 alternatives  (0) 2016.07.05
댓글