fix(kordoc): 파일 크기 제한 삭제, Docker 메모리 상한 4GiB 적용

25MB 파일 크기 제한은 텍스트 PDF(18MB 성공)까지 차단하는 문제.
실제 원인은 이미지 스캔 PDF의 in-memory 파싱 시 메모리 폭발.

- extract_worker: 25MB 파일 크기 제한 삭제
- docker-compose: kordoc-service mem_limit 4g + memswap_limit 4g
- 텍스트 PDF → 크기 무관 정상 파싱
- 이미지 PDF → 4GiB 초과 시 Docker OOM-kill → 재시작 → 3회 실패 후 failed

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-04-15 14:21:08 +09:00
parent 21931138e3
commit 32c79740f8
2 changed files with 4 additions and 10 deletions
+2 -10
View File
@@ -55,17 +55,9 @@ async def process(document_id: int, session: AsyncSession) -> None:
return
# kordoc 파싱 (HWP/HWPX/PDF)
# OOM 방지는 docker-compose.yml의 kordoc-service mem_limit으로 통제.
# 파일 크기 제한 없음 — 텍스트 PDF는 크기와 무관하게 파싱 가능.
if fmt in KORDOC_FORMATS:
# 25MB 초과 파일은 kordoc in-memory 파싱 시 OOM 크래시 위험 → 스킵
KORDOC_SIZE_LIMIT = 25 * 1024 * 1024
if (doc.file_size or 0) > KORDOC_SIZE_LIMIT:
size_mb = (doc.file_size or 0) / (1024 * 1024)
doc.extracted_text = ""
doc.extracted_at = datetime.now(timezone.utc)
doc.extractor_version = f"skip_oversize_{size_mb:.0f}mb"
logger.warning(f"[kordoc] {doc.file_path} ({size_mb:.1f}MB) — 25MB 초과, kordoc OOM 방지로 스킵")
return
# 컨테이너 내부 경로: /documents/{file_path}
container_path = f"/documents/{doc.file_path}"
# 대형 PDF 대응: 10MB당 60초, 최소 60초 최대 300초