500만 데이터 엑셀 출력을 4GB 메모리에서 하는방법
130
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

대용량 데이터 엑셀 출력 최적화

이 게시물은 500만 건 이상의 대용량 데이터를 4GB 메모리 환경에서 안정적으로 엑셀로 출력하는 방법을 공유합니다.

문제점 및 원인

  • 한 번에 모든 데이터를 메모리에 올리는 기존 방식으로 인해 OOM 발생
  • BackOffice Gateway의 재시도 정책으로 서버 과부하 심화
  • Reflection 사용과 문자열 처리로 CPU 부하 증가

해결 전략

  • 시스템 리소스 증설 대신 병렬 처리와 스트리밍, Cursor 기반 DB 조회 도입
  • 3일 단위로 날짜 범위를 쪼개 병렬로 처리하여 조회 및 엑셀 생성 최적화
  • Cursor 방식으로 메모리 사용 최소화하며 대용량 데이터 스트리밍 처리
  • 엑셀 파일 용량에 따라 단일 CSV 또는 여러 CSV를 ZIP으로 분할 저장
  • AWS S3 PreSigned URL과 MultipartUpload를 활용해 비동기 다운로드 지원
  • 파일 대기열 시스템을 통해 사용자에게 진행 상황 및 다운로드 링크 제공

성과 및 고려사항

  • OOM 문제와 CPU 과부하를 해결하여 안정적인 시스템 운영 가능
  • 사용자는 비동기 처리로 인한 편리한 다운로드 경험 제공
  • DB 커서 방식은 연결 유지로 인해 동시 요청이 많을 경우 주의 필요

연관 게시글