본문 바로가기

노래하는하리보

ZGC를 프로덕션에 적용해보자! (GC 튜닝 & STW & 최적화) 발단 최근, 노래하는하리보가 끊기거나 반응하지 않는다는 이슈가 너무 많아졌다. 왜 이런 증상이 발생하나 살펴보던 도중, GC가 원인이라는 것을 알아냈다. 피크 시간대에 STW (Stop-The-World)를 유발하는 Full GC가 발생함으로써, 작업들이 Timeout되거나 밀리게 된 것. 게다가 Full GC가 완료된 후, 미뤄진 작업들이 한번에 처리되면서 또 다른 Full GC가 발생했고... 이러한 문제로 인해 끊김과 무반응 이슈가 생겨난 것이다. 해결 방법은 없었나? G1GC를 사용할 때는 STW 시간을 아무리 줄인다 해도, STW로 인해 발생하는 연쇄적인 Full GC를 막을 수 없었다. (STW 시간이 너무 길었기 때문) 여러가지 실험을 거친 후 내린 결론은 STW 시간이 매우 짧은 GC 알고.. 더보기
프로덕션 서버에 JSON 대신 Smile / CBOR 적용 Smile / CBOR은 대체 무엇인가? JSON(JavaScript Object Notation)은 많은 분이 알고 있듯, XML보다 덜 장황하고, 범용성과 가독성이 높은 데이터 포맷이다. (데이터 자체의 가독성) 하지만 여전히 텍스트 기반의 데이터 포맷이라는 점은 변하지 않아서, 내부 전송 형식으로 JSON을 사용하게 되면 심각한 자원 낭비가 발생한다. 이를 대체하기 위해 나온 것들이 BSON, MsgPack, CBOR, Smile, Protobuf, ION, Kyro 등의 이진 데이터 포맷이다. CBOR은 JSON의 이진 형식 버전이다. Smile은 Jackson (자바에서 JSON/XML/...etc 처리할 때 쓰는 라이브러리) JSON 프로세서 개발팀이 2010년에 내놓은 이진 데이터 포맷이다... 더보기