돌아오지 않는 메모리를 찾아서
Kubernetes에서 메모리 사용률이 99%까지 오르던 원인을 heap 누수로 의심했지만, JVM committed heap과 로그 파일 page cache가 핵심 원인이었습니다. JVM 옵션 조정과 FILE Appender 제거로 사용률을 크게 낮추고 안정화했습니다.
#Kubernetes#JVM#Java
7100
JVM 태그가 달린 국내 IT 기업 기술 블로그 글을 최신순으로 모았습니다.
6개 표시
Kubernetes에서 메모리 사용률이 99%까지 오르던 원인을 heap 누수로 의심했지만, JVM committed heap과 로그 파일 page cache가 핵심 원인이었습니다. JVM 옵션 조정과 FILE Appender 제거로 사용률을 크게 낮추고 안정화했습니다.
JVM 힙은 정상인데 컨테이너가 OOMKilled되는 원인을 네이티브 메모리에서 추적했습니다. 스트림 close 누락과 zlib Inflater 버퍼가 핵심이었고, 도구 조합으로 범인을 찾았습니다.
Docker 환경에서 힙은 멀쩡한데 메모리가 계속 늘어나는 원인을 추적한 글입니다. NMT로 JVM 내부를 확인했지만 실제 RSS와 차이가 있어 네이티브 메모리 문제를 의심했습니다.
배포 직후 발생하던 DB Connection Timeout과 응답 지연의 원인을 분석했습니다. JVM 웜업과 startupProbe 적용으로 초기 지연 문제를 해결했습니다.
자바의 바이트코드 실행 특성과 JVM 변환 과정의 비용을 설명했습니다. 실행 시간 효율을 높이기 위한 CDS와 Layered Jar를 소개했습니다.

WebLogic Hang-up 원인을 GC log, Heap dump, Thread dump로 추적해 `javax.activation` 구버전과 쓰레드 누적 문제를 확인했습니다. 최신 jar를 우선 로딩하도록 바꾼 뒤 일부 서버에서 메모리 누수와 장애가 개선되었습니다.