본문 바로가기

ZGC

ZGC를 프로덕션에 적용해보자! (GC 튜닝 & STW & 최적화) 발단 최근, 노래하는하리보가 끊기거나 반응하지 않는다는 이슈가 너무 많아졌다. 왜 이런 증상이 발생하나 살펴보던 도중, GC가 원인이라는 것을 알아냈다. 피크 시간대에 STW (Stop-The-World)를 유발하는 Full GC가 발생함으로써, 작업들이 Timeout되거나 밀리게 된 것. 게다가 Full GC가 완료된 후, 미뤄진 작업들이 한번에 처리되면서 또 다른 Full GC가 발생했고... 이러한 문제로 인해 끊김과 무반응 이슈가 생겨난 것이다. 해결 방법은 없었나? G1GC를 사용할 때는 STW 시간을 아무리 줄인다 해도, STW로 인해 발생하는 연쇄적인 Full GC를 막을 수 없었다. (STW 시간이 너무 길었기 때문) 여러가지 실험을 거친 후 내린 결론은 STW 시간이 매우 짧은 GC 알고.. 더보기
자바 GC (JVM GC) 최적화하기 요약 별다른 튜닝 없이도 대규모 서비스를 운영할 수 있게 해주는 GC 알고리즘들 GC 알고리즘 종류 ZGC 힙 사이즈가 대형 일수록 효율적 G1GC와 달리 대형 힙에서의 튜닝이 필요 없음 JDK 11부터 사용 가능, JDK 15부터 production ready (다만 패치가 백포팅된 몇몇 JDK에서는 JDK 버전이 15 미만이어도 production ready) Oracle에서 개발 &#39;G1GC보다 빠른 Shenandoah GC&#39; 보다도 압도적으로 빠름. realtime 애플리케이션에 매우 적합. (1TB 힙에서도 GC pause 1ms 미만, G1GC는 100ms 이상) (G1GC < Shenandoah GC < ZGC) 다만, 한번 점유한 메모리를 해제하지 않음 (2021/8 패치 이전.. 더보기