EKS 이관 후 2시간마다 500MB 메모리 스파이크, 원인은 로그 압축과 페이지 캐시
·2026.08.27 17:34
핵심 내용
EKS 이관 후 발생한 주기적 메모리 스파이크의 원인이 로그 압축과 페이지 캐시로 확인됨.
자세히 보기
EC2에서 EKS로 API를 이관한 후, 두 시간 주기로 500MB씩 메모리가 급증하는 현상이 발생했습니다. 이 문제는 에러 로그나 OOM(Out Of Memory) 기록 없이 조용히 진행되어 원인 파악이 어려웠습니다.
초기 의심과 실패
첫 번째 용의자는 자바 힙 바깥의 네이티브 메모리였습니다. 외부 통신 버퍼 관리 방식과 System.gc() 옵션을 수정하여 물리 메모리 점유를 1,543MB에서 959MB로 낮추는 데 성공했습니다. 하지만 메모리 스파이크는 사라지지 않았습니다.
자바 버전 및 GC 변경
두 번째로 자바 21에서 25로 업그레이드하고 Generational ZGC로 전환했습니다. 스테이징 환경에서 부하 테스트를 통과했으나, 상용 배포 후에도 문제는 반복되었습니다.
최종 원인 및 해결
결국 원인은 로그 gzip 압축과 페이지 캐시였습니다. EKS 환경에서 로그를 파드 임시 볼륨에 저장하고 사이드카로 수집하는 구조에서, 압축 과정에 발생하는 캐시 메모리가 컨테이너 상한에 영향을 미쳤던 것입니다. 이 문제를 해결하기 위해 로그 처리 방식을 조정하고 메모리 상한을 재조정했습니다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.