목록 보기
빌링 3.0 성능 이슈 개선 기록 - Part 1
백엔드

빌링 3.0 성능 이슈 개선 기록 - Part 1

클라우드메이트
클라우드메이트
2026년 3월 10일

두줄요약

대량 인보이스 발송에서 발생한 쿼리 지연과 커넥션 고갈 원인을 분석했습니다. 복합 인덱스·풀 설정·누수 수정·분할 처리로 안정성을 개선했습니다.

문제 상황

  • 월별 인보이스 약 200건 일괄 발송 시 DB 쿼리 타임아웃, SMTP 전송 지연, DB 커넥션 고갈 발생
  • 체크박스 선택마다 세부 조회 API를 호출하고 PDF 생성·발송을 동시 처리하는 프론트엔드 중심 흐름

원인 분석

  • KeyId 그룹화와 최신 batchDate 조회에 필요한 복합 인덱스 부재
  • MySQL 최대 커넥션 초과와 IAM 서비스의 rows.Close() 누락에 따른 커넥션 누수
  • SMTP 서버 전송 제한과 대량 동시 요청 집중

해결 방법

  • KeyId ASC, batchDate DESC 순서의 복합 인덱스 생성
  • MySQL max_connections 상향, 백엔드 MaximumPoolSize 제한, Go 조회 로직의 rows.Close() 보완
  • 결과 미사용 쿼리의 db.Query를 db.Exec로 전환하고 생성형 AI로 유사 누수 패턴 탐색

적용해볼 점

  • 세부 조회를 체크 시점이 아닌 실제 발송 시점으로 이동
  • 인보이스 조회·PDF 생성·발송 작업을 50건 단위로 분할 처리
  • 향후 백그라운드 작업 기반 발송 구조와 관측성·부하 테스트 체계 검토

다음 읽기

비슷한 주제의 백엔드 글

배포 직후 발생하는 응답 지연을 해결하기 위한 여정 (feat. JVM 웜업)

배포 직후 발생하던 DB Connection Timeout과 응답 지연의 원인을 분석했습니다. JVM 웜업과 startupProbe 적용으로 초기 지연 문제를 해결했습니다.

카카오페이
카카오페이
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...