본문 바로가기
DevOps

애플리케이션 튜닝

by david100gom 2019. 5. 23.

1. GC 확인

  • jstat 를 통하여 gc 상태를 점검한다. JDK 에 기본적으로 포함되어 있으며, 위치는 <JAVA_HOME>/bin/jstat 이다.
  • jstat -gc -h20 -t  3000 3000 
    • -h20 : 20라인마다 header 찍음
    • -t : time stamp 프린트(JVM 이 스타트 된 이후의 시간) 
    • 2546: 프로세스 id
    • 3000 : interval (ms 단위) 
    • 3000 : count
  • jstat 를 통하여 full gc 주기를 확인한다. 자주 gc 가 일어나면 CPU를 자주 점유하게 되고, 애플리케이션의 STW 를 일으키게 된다.
YGCT/YGC = Minor GC 처리시간
FGCT/FGC = Full GC 처리시간
  
Minor GC의 처리 시간이 빠르다(50ms내외).
Minor GC 주기가 빈번하지 않다(10초 내외).
Full GC의 처리 시간이 빠르다(보통 1초 ~ 2초 이내).
Full GC 주기가 빈번하지 않다(10분에 1회).

 

2. Thread 확인

자바 스레드가 데드락에 걸려서 gc 가 되지 않는지 확인한다. gc 가 되지 않는 스레드는 애플리케이션의 성능을 저하시키는 원인이 된다. 

  • jvisualvm 을 이용하여 확인한다. jvisualvm 는 JDK 에 기본적으로 포함되어 있으며, 위치는 <JAVA_HOME>/bin/jvisualvm 이다.
  • https://visualvm.github.io/

3. 최종확인

1단계와 2단계에서 해결이 되지 않을때는 APM 을 이용하여 점검하는것이 좋다. 오픈소스 APM 인 scouter 를 활용한다.

 

scouter-project/scouter

Scouter is an open source APM (Application Performance Management) tool. - scouter-project/scouter

github.com

 

  • scouter client

 

댓글