힙은 남았는데 서비스가 멈췄다
한국 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, 히스토그램과 지배 트리, 컨테이너 힙 기본값