fix: Python heap 누적 OOM 방지 — max-requests 500 + 컨테이너 메모리 2GB 제한

Python CPython 메모리 할당자는 freed 블록을 OS에 반환하지 않음.
수백 건의 백필 요청 처리 후 heap이 계속 성장 → 시스템 전체 OOM.

변경:
- --limit-max-requests 500: 500요청 후 uvicorn worker 자동 재시작
  → heap 초기화, 메모리 누수 방지
- mem_limit/memswap_limit 2g: 컨테이너 메모리 2GB 하드 캡
  → OS 전체가 아닌 컨테이너 안에서 OOM 제어
  → Docker restart: unless-stopped로 자동 복구

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
main
I Luk Kim 4 months ago
parent 7e1a4699e9
commit 253086eaad

@ -65,8 +65,10 @@ services:
- ./API_DOCUMENTATION.md:/app/API_DOCUMENTATION.md # API documentation - ./API_DOCUMENTATION.md:/app/API_DOCUMENTATION.md # API documentation
- ./yfinance_plus:/app/yfinance_plus # Mount yfinance_plus for development - ./yfinance_plus:/app/yfinance_plus # Mount yfinance_plus for development
- ./data:/app/data # For data files - ./data:/app/data # For data files
mem_limit: 2g
memswap_limit: 2g
restart: unless-stopped restart: unless-stopped
command: ["python", "-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "18000", "--reload", "--limit-concurrency", "20"] command: ["python", "-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "18000", "--reload", "--limit-concurrency", "20", "--limit-max-requests", "500"]
# Frontend Application # Frontend Application
frontend: frontend:

Loading…
Cancel
Save