-
OOM 및 CPU 증가 시 모니터링 방법잡따꾸리 2020. 1. 30. 15:25
1.HeapDump file 분석
- java pid 조회 후 heapdump file 생성
경로 : /JAVA_HOME/bin
jmap -dump:format=b,file=heapdump.hprof pid
2. heapDump 분석 툴 Eclipse MAT(Memory Analyzer) 실행
힙 메모리 상황을 파악해 메모리 누수 현상과 필요없는 메모리 할당을 감지 할 수 있도록 도움을 주는 툴
가장 많이 사용했던 기능은 Leak Suspects Report, Dominator tree 이며, 메모리를 가장 많이 차지하고 있는 객체에 대한 정보를 제공해 줌.
open heap dump → file 업로드 하면 아래 Leack Suspect Report 를 선택.
Leack Suspect 는 가장 큰 용량을 차지하고 있는 객체들을 좀 더 세분화 된 도표로 보여주고, Details에 자세한 정보가 표기되어 있다.
Dominator Tree는 현재 덤프 된 메모리 스냅 샷 중 가장 큰 용량을 차지하고 있는 객체 순으로 보여주고, Thread Details 를 확인 할 수 있다.
2. Visual VM 을 이용한 JVM 모니터링
오픈소스 기반, JVM 모니터링 GUI 툴 , 여러개의 VM 모니터링과 profiling 가능
jdk 1.7 이상의 경우 JAVA_HOME/bin 밑에 포함되어 있음.
전체 VM에 대한 Thread 개수, Class개수와 CPU, JVM 메모리에 상황을 모니터링
Thread 화면에서는 time frame에 따른 Thread와 어떤 상태인지 모니터링이 가능하다. 그리고, 마우스 우 클릭 버튼을 이용해서 heapdump 와 threaddump를 저장해주어 볼 수 있다.
local 에서는 쉽게 띄워서 사용가능하지만, Remote 서버에서는 별도의 작업이 필요.
- JVM 옵션에 아래와 같은 내용 추가 (JMX 설정)
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8500 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder
2. visualvm 내 remote host address 추가 (8500 포트 넣지 않아도 적용 가능)
'잡따꾸리' 카테고리의 다른 글
ExecuterService.newFixedThreadPool의 메모리 릭 위험 (0) 2020.04.23