Skip to content

Fix: Render Free 플랜 메모리 초과 종료 대응 - #140

Merged
ppp1969 merged 1 commit into
devfrom
139-fix-render-free-oom
Jul 14, 2026
Merged

ppp1969 merged 1 commit into
devfrom
139-fix-render-free-oom

Conversation

@ppp1969

@ppp1969 ppp1969 commented Jul 14, 2026 •

Copy link
Copy Markdown
Contributor

작업 내역 요약

Render Free 플랜의 512MB 메모리 제한에서 백엔드 인스턴스가 status 137로 종료되는 문제를 완화했습니다.

Closes #139

변경 사항

  • Docker 런타임 JVM 옵션을 Render Free 기준으로 축소했습니다.
    • -Xmx384m에서 -Xmx256m로 낮추고 metaspace, direct memory, code cache, thread stack 제한을 추가했습니다.
  • Spring lazy initialization을 기본 활성화하고 Swagger/OpenAPI를 기본 비활성화했습니다.
  • Hibernate default_batch_fetch_size 기본값을 1000에서 100으로 줄였습니다.
  • 이미지 생성 executor와 EPUB 정규화 executor의 동시 실행 수를 1개로 제한했습니다.
  • 캐릭터 이미지 업로드 시 base64 재인코딩/재디코딩을 제거하고 byte 배열을 바로 S3에 업로드하도록 변경했습니다.
  • Render 배포 runbook의 환경변수 예시를 실제 배포값과 맞췄습니다.

Code Review

  • Render Dashboard에 기존 JAVA_TOOL_OPTIONS=-Xmx384m -XX:MaxRAMPercentage=75가 남아 있으면 Dockerfile보다 우선 적용되므로 아래 값으로 교체해야 합니다.
  • Swagger가 기본 비활성화되므로 운영/무료 플랜에서 API 문서가 필요하면 SPRINGDOC_ENABLED=true를 명시해야 합니다.
  • 검증: ./gradlew.bat test 전체 통과

Render Dashboard에 추가/교체할 환경변수:

# 기존 JAVA_TOOL_OPTIONS가 있으면 아래 값으로 교체
JAVA_TOOL_OPTIONS=-Xms64m -Xmx256m -XX:+UseSerialGC -XX:ActiveProcessorCount=1 -XX:MaxMetaspaceSize=128m -XX:ReservedCodeCacheSize=64m -XX:MaxDirectMemorySize=32m -Xss256k -XX:+ExitOnOutOfMemoryError

# 없으면 새로 추가
SPRING_MAIN_LAZY_INITIALIZATION=true
SPRINGDOC_ENABLED=false
HIBERNATE_DEFAULT_BATCH_FETCH_SIZE=100

# 기존 값이 없다면 함께 추가 권장
DB_MAX_POOL_SIZE=2
DB_MIN_IDLE=1

ScreenShot

Instance failed: r8xxz
Ran out of memory (used over 512MB) while running your code.
July 14, 2026 at 3:02 PM

Instance failed: r8xxz
Exited with status 137 while running your code. Check your service logs for more information.
July 14, 2026 at 2:57 PM

@ppp1969
ppp1969 marked this pull request as ready for review July 14, 2026 07:16
@ppp1969
ppp1969 merged commit d06ca43 into dev Jul 14, 2026
1 check passed
@ppp1969
ppp1969 deleted the 139-fix-render-free-oom branch July 14, 2026 07:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix: Render Free 플랜 메모리 초과로 인스턴스가 종료되는 문제

1 participant