본문 바로가기
백엔드/Java

JVM 튜닝 2

by david100gom 2024. 3. 20.

YGCT/YGC = Minor GC 처리시간
FGCT/FGC = Full GC 처리시간
  
--> 아래의 기준이면 적당함... 절대치는 아님.
Minor GC의 처리 시간이 빠르다(50ms내외).
Minor GC 주기가 빈번하지 않다(10초 내외).
Full GC의 처리 시간이 빠르다(보통 1초 ~ 2초 이내).
Full GC 주기가 빈번하지 않다(10분에 1회).
  
Survivor 영역 중 하나는 반드시 비어 있는 상태로 남아 있어야 한다. 만약 두 Survivor 영역에 모두 데이터가 존재하거나, 두 영역 모두 사용량이 0이라면 여러분의 시스템은 정상적인 상황이 아니라고 생각하면 된다.
--> 특정 스레드에서 비즈니스 로직이 blocking 되어 GC에 문제가 발생한다. 해당 로직을 Async 로 리팩토링해야 한다.
--> 아래와 같이 FGC 일때 old 영역이 제대로 비워져야함. Full GC 또한 5/0.509 도 1초로 적당, Minor GC 도 0.01 로 적당.
 
@Async
 요청이 긴 경우
 로그 처리
 푸시 처리
 
Timestamp         S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT  
         1700.4  71.05   0.00  81.15  99.63  95.42  93.09   1000   15.750     4    0.414   16.164
         1701.4   0.00  81.20  32.15  99.72  95.42  93.09   1001   15.764     4    0.414   16.178
         1702.4   0.00  81.20  96.06  99.72  95.42  93.09   1001   15.764     4    0.414   16.178
         1703.4   0.00   0.00  51.00   6.76  95.42  93.09   1002   15.777     5    0.509   16.286
 
java-gc-overhead-limit-exceeded 에러 : https://www.baeldung.com/java-gc-overhead-limit-exceeded

'백엔드 > Java' 카테고리의 다른 글

다른 바이트 순서를 가진 시스템과의 통신  (0) 2024.03.20
JVM 튜닝 5  (0) 2024.03.20
JVM 튜닝 4  (0) 2024.03.20
JVM 튜닝 3  (0) 2024.03.20
JVM 튜닝 1  (0) 2024.03.20
Java Time과 System Time 의 문제해결  (0) 2024.03.20
serialVersionUID 이란? Warning 해결하기  (0) 2024.03.20
자바 UTF-8 바이트  (0) 2024.03.19

댓글