LabHub
배우기 러닝패스 코스

힙은 남았는데 서비스가 멈췄다

한국 SI 실무 · 중급 · 이론 4 · 퀴즈 4 · 실습 4

한국 채용 공고의 38% 가 Java 를 요구하지만(2026-09 집계, 한국 6사 108건) 공고가 뜻하는 것은 문법이 아니라 운영입니다. 힙은 남았는데 서비스가 멈추는 두 가지 사건 — GC 정지와 스레드 대기 — 를 직접 만들고, GC 로그·jstat·jcmd·스레드 덤프·힙 덤프로 원인을 짚습니다. Tomcat 의 스레드 풀과 DB 커넥션 풀에 대기 상한을 넣어 실제 인스턴스로 띄우고, OutOfMemoryError 에서 덤프를 남기고 프로세스를 확실히 끝내는 기동 옵션을 스크립트로 못 박습니다. Java 서비스를 운영하거나 곧 운영할 사람, tomcat-nginx 코스를 마친 사람을 위한 과정입니다.

실습 시작하기

커리큘럼

GC 로그를 읽는다

힙 구조와 컬렉터, -Xlog:gc 로그의 정지 시간, jstat·jcmd 로 보는 살아 있는 힙

스레드 덤프로 멈춘 이유를 찾는다

잠금을 쥔 스레드와 줄 선 스레드, 교착, tryLock 타임아웃으로 하는 복구

풀이 마르면 서비스가 선다

Tomcat 커넥터의 세 숫자, DBCP 의 maxWaitMillis, CATALINA_BASE 인스턴스 실험

힙 덤프에서 범인을 찾는다

HeapDumpOnOutOfMemoryError·ExitOnOutOfMemoryError, 히스토그램과 지배 트리, 컨테이너 힙 기본값

참고 문서