본문 바로가기

JVM

ZGC를 프로덕션에 적용해보자! (GC 튜닝 & STW & 최적화) 발단 최근, 노래하는하리보가 끊기거나 반응하지 않는다는 이슈가 너무 많아졌다. 왜 이런 증상이 발생하나 살펴보던 도중, GC가 원인이라는 것을 알아냈다. 피크 시간대에 STW (Stop-The-World)를 유발하는 Full GC가 발생함으로써, 작업들이 Timeout되거나 밀리게 된 것. 게다가 Full GC가 완료된 후, 미뤄진 작업들이 한번에 처리되면서 또 다른 Full GC가 발생했고... 이러한 문제로 인해 끊김과 무반응 이슈가 생겨난 것이다. 해결 방법은 없었나? G1GC를 사용할 때는 STW 시간을 아무리 줄인다 해도, STW로 인해 발생하는 연쇄적인 Full GC를 막을 수 없었다. (STW 시간이 너무 길었기 때문) 여러가지 실험을 거친 후 내린 결론은 STW 시간이 매우 짧은 GC 알고.. 더보기
JVM을 교체하면서 GraalVM은 뭐고, OpenJ9, AdoptOpenJDK, Azul JDK는 뭐지? GraalVM GraalVM은 Hotspot의 낡디낡은 C2 컴파일러를 대체하기 위해, Oracle Labs를 중심으로 개발중인 차세대 JIT 컴파일러입니다. 매우 빠른 것이 특징입니다. OpenJ9 OpenJ9은 IBM의 J9 JVM을 이클립스 재단에서 인수하여, 개발 및 배포중인 JVM입니다. (IBM도 개발에 참여 중) 매우 적은 메모리 사용량이 특징입니다. AdoptOpenJDK AdoptOpenJDK는, 커뮤니티에서 빌드하여 배포하는 OpenJDK입니다. Hotspot, OpenJ9 VM을 빌드하여 배포하고 있습니다. (보안 패치 또한 커뮤니티에서 제공합니다. 따라서 기존 OpenJDK보다 보안 패치가 빠르게.. 더보기