Skip to content

extractor JVM GC 명시 - #116

Merged
m-a-king merged 1 commit into
mainfrom
infra/115-extractor-gc
Oct 15, 2026
Merged

m-a-king merged 1 commit into
mainfrom
infra/115-extractor-gc

Conversation

@m-a-king

Copy link
Copy Markdown
Collaborator

한눈에

extractor JVM 의 메모리 회수 방식을 설정으로 고정함

  • 이전: JVM 이 컨테이너 크기를 보고 메모리 회수 방식(GC)을 스스로 고름
    • 지금은 Serial 방식. 컨테이너 한도를 올리면 G1 방식으로 조용히 바뀜
    • G1 은 메모리를 더 써서 스왑 없는 이 컨테이너가 강제 종료될 수 있음
  • Serial 방식을 설정에 명시함
  • 힙 메모리가 바닥나면 JVM 이 바로 종료되고 컨테이너가 재시작함
  • 머지하면 extractor 가 prod 에 자동 배포됨

Situation

착수 후 확인

항목 값
GC 방식 Serial (자동 선택)
멈춤 최대 12ms (young)
전체 회수 0회
컨테이너 사용 메모리 243MiB (최고 253MiB), 한도 640MiB
힙 상한 448MiB (한도의 70%)

Task

GC 와 OOM 동작 명시

Action

Serial 명시

선택지 장점 비용
Serial 명시 (채택) 지금 동작 그대로. 힙 밖 메모리가 가장 작음 힙이 차면 단일 스레드 전체 멈춤
G1 명시 (core 와 같은 선택) 멈춤이 짧음 힙 밖 메모리 증가. 스왑 0 이라 강제 종료 위험
  • core 가 G1 을 고른 이유는 Serial 전체 회수가 평균 18초 멈춘 사고(#599 core)
    • 원인: 그때 core 컨테이너는 스왑이 있어 회수 중 스왑 읽기가 섞임
    • extractor 는 스왑 0 이라 같은 조건 아님
  • 멈춤이 문제로 측정되면 그때 G1 검토

힙 OOM 때 종료

  • 힙이 바닥나면 JVM 이 반쯤 죽은 채로 요청을 받는 대신 종료
    • 컨테이너 재시작 정책이 다시 띄움
    • 비용: 처리 중인 요청이 끊김. core 는 일시 실패로 받아 재시도

Result

로컬 확인

  • 같은 이미지·한도(640m)로 JVM 설정값 확인
    • Serial 켜짐, G1 꺼짐, 힙 상한 448MiB, OOM 종료 켜짐
  • 런타임 동작은 지금과 같음

연관 이슈

- JAVA_TOOL_OPTIONS 에 -XX:+UseSerialGC·-XX:+ExitOnOutOfMemoryError 추가
  - 원인: 640m 는 JVM 서버급 판정(1792MB) 미만이라 지금도 Serial. 한도만 올려도 G1 으로 조용히 바뀜
  - 대안: G1 명시(core 와 같은 선택)
    - 기각: 스왑 0 에 힙 밖 몫 약 190m 라 G1 의 추가 메모리가 강제 종료 위험. Copy 멈춤 14일 최대 12ms
  - ExitOnOutOfMemoryError: 힙 OOM 뒤 반쯤 죽은 JVM 대신 재시작
- 힙 크기 주석을 JAVA_TOOL_OPTIONS 참조 한 줄로 바꿈
@m-a-king m-a-king added the infra 운영 환경 (IaC·클라우드 리소스·secret·배포 workflow) label Oct 15, 2026
@m-a-king m-a-king linked an issue Oct 15, 2026 that may be closed by this pull request
@m-a-king m-a-king self-assigned this Oct 15, 2026
@coderabbitai

coderabbitai Bot commented Oct 15, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 1f8d2569-09b0-41c0-9956-7aca38daba91
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

Discord 스레드 연동용 메타데이터입니다. discord-pr-bot 워크플로가 자동 생성하며, 수정·삭제하면 PR 과 Discord 알림 연동이 끊깁니다.

@m-a-king
m-a-king merged commit 968fae1 into main Oct 15, 2026
5 checks passed
@m-a-king
m-a-king deleted the infra/115-extractor-gc branch October 15, 2026 07:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

infra 운영 환경 (IaC·클라우드 리소스·secret·배포 workflow)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

extractor JVM GC 명시

1 participant