Choorai
CI 빌드 메모리 이슈

빌드 OOM (메모리 부족) 해결하기

JavaScript heap out of memory, Killed 오류는 빌드 메모리 한도 초과가 원인입니다.

TL;DR (핵심 요약)

1) OOM 로그 확인 2) NODE_OPTIONS로 임시 완화 3) 소스맵/플러그인/병렬도 최적화 4) 필요 시 CI 러너 스펙 상향

심각

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

원인

빌드 프로세스가 허용 메모리 한도를 초과했습니다.

해결책
  1. 빌드 명령에 NODE_OPTIONS=--max-old-space-size 적용
  2. 소스맵/불필요 플러그인/병렬 작업 최소화
  3. 의존성 중복/대용량 번들 구간 점검
  4. CI 러너 메모리 증설 또는 단계 분리

실전 대응 예시

package.json
{
  "scripts": {
    "build": "vite build",
    "build:ci": "NODE_OPTIONS=--max-old-space-size=4096 vite build"
  }
}
vite.config.ts
import { defineConfig } from 'vite';

export default defineConfig({
  build: {
    sourcemap: false,
    chunkSizeWarningLimit: 1200,
  },
});

실무 팁

OOM은 증상이고 원인은 번들 구조인 경우가 많습니다. 대용량 라이브러리 lazy load, 번들 분석 도구로 원인 패키지를 먼저 찾아보세요.

Prerequisites

  • 빌드 실패 로그에서 OOM/heap out of memory 메시지를 확인할 수 있어야 합니다.
  • CI 실행 환경의 메모리 제한값을 확인할 수 있어야 합니다.
  • Node 메모리 옵션 설정(`--max-old-space-size`)이 가능한 환경이어야 합니다.

Validation

  1. 동일 커밋에서 CI 빌드가 OOM 없이 완료됩니다.
  2. 빌드 단계별 메모리 사용량이 임계치 아래로 안정화됩니다.
  3. 불필요한 번들/테스트/소스맵 생성이 줄어 전체 메모리 사용량이 감소합니다.

Troubleshooting

  • 빌드 명령에 NODE_OPTIONS=--max-old-space-size를 적용해 임시 완화하세요.
  • 대용량 의존성/소스맵/병렬 빌드 옵션을 줄여 메모리 사용량을 낮추세요.
  • CI 머신 타입을 상향하거나 빌드 단계를 분리하세요.

References

관련 문서

마지막 업데이트: 2026년 2월 22일 · 버전: v0.0.1

피드백 보내기

입력한 내용으로 새 이슈 페이지를 엽니다.

GitHub 이슈로 보내기