인턴 하던 도중 오류가 났다
파이썬 써버 부하테스트를 하는데 오류가 나왔다.
QueuePool limit of size 20 overflow 30 reached, connection timed out, timeout 30.00
에러 난 이유
Gpt 형님 답변:
SQLAIchemy의 커넥션 풀 관리 문제 때문에 발생한것입니다.
의미: QueuePoll limit of size 20 -> 기본 연결 풀 사이즈가 20개
overflow 30 -> 풀이 꽉 차도 30 개 까지는 해줄게 (임시연결)
최대 50개를 넘어서서 대기하지만 30초가 지났는데 새 연결을 못하면 죽을게
---> session.close()를 빼먹거나, 동시에 너무 많은 요청을 보내거나, 쿼리가 느리게 진행되거나
아마 동시에 너무 많은 요청이 문제였던거 같음
이번에 200명이 동시에 요청보내는 걸로 바꿨는데 그게 문제였던거 같다 (부하테스트)
해결법
engine = create_async_engine(
DATABASE_URL,
pool_size=50, # 기본 연결 수 늘리기
max_overflow=50, # 임시 연결 허용치 늘리기
pool_timeout=60, # 대기 시간 늘리기
pool_recycle=3600 # 커넥션 재활용 시간
)
이런 식으로 늘리거나 DB 최적화를 하거나
나의 경우 세션을 물고있는 시간이 길어져서 문제가 된거같다.
지금 현재 Api 플로우는 이렇다!
DB세션 열음 -> 프롬프트 가져옴 -> ai요청(책 제목) -> 네이버 api 요청(책 검증) -> ai 요청(구조화) -> 응답 및 저장-> 세션 닫음
비 효율 적인 구조로 인해 세션을 오래 물고 있어서 문제가 되었던 것이다.
따라서
1단계: DB 데이터 수집 (세션 1 - 즉시 종료)
├── 프롬프트 템플릿 조회
├── 교과목 데이터 조회
├── 기존 아이템 조회 (중복 방지용)
└── 세션 즉시 종료
2단계: 외부 API 호출 (DB 세션 없음)
├── Books: Gemini + 네이버 API
├── Research: Azure OpenAI
└── Subject: Azure OpenAI
(이 단계에서는 DB 커넥션을 전혀 사용하지 않음)
3단계: DB 저장 (세션 2 - 즉시 종료)
├── 새 세션 생성
├── 기존 RECOMMENDATION 아이템 삭제
├── AI 결과 저장
└── 세션 즉시 종료
이런식으로 구조를 변경하였다.
✅ 1단계: DB 데이터 수집 (짧은 세션으로 즉시 종료)
_collect_db_data_for_generation: 임시 생성용 DB 데이터 수집
_collect_db_data_for_save: 저장용 DB 데이터 수집
프롬프트 템플릿, 교과목 데이터, 기존 아이템 중복 방지 데이터를 한 번에 조회
세션 사용 시간: 5초 미만
✅ 2단계: 외부 API 호출 (DB 세션 완전 독립)
_process_ai_calls_without_db: 임시 생성용 AI 호출
_process_ai_calls_for_save: 저장용 AI 호출
Gemini, Azure OpenAI, 네이버 API 호출을 병렬 처리
DB 커넥션 사용: 0초 (완전 독립)
✅ 3단계: DB 저장 (별도 짧은 세션)
_save_results_to_db: AI 결과를 DB에 저장
새로운 세션으로 기존 RECOMMENDATION 아이템 삭제 후 새 아이템 저장
세션 사용 시간: 3초 미만
✅ 지원 서비스 개선
BooksRecommendationService: DB 세션 독립적 recommend_books_with_prompts 메서드 추가
DynamicPromptService: DB 세션 없이 사용할 수 있는 *_with_data 메서드들 추가
BooksVerificationService: 이미 DB 세션 독립적으로 구현됨
1단계: DB 데이터 수집 (5초)
2단계: AI 호출 (0초 - DB 세션 없음)
3단계: DB 저장 (3초)
총 세션 사용: 8초 미만 (90% 단축!)
앞으로는 이런 오류 띄우지 마라(동물농장 톤으로)
'인턴' 카테고리의 다른 글
| 글로랑 인턴 후기: 스타트업 협업, 애자일, 그리고 개발자로서 배운 것들 (0) | 2026.04.03 |
|---|---|
| 스타트업 백엔드 개발 인턴 5달차 후기 - 글로랑 (0) | 2025.12.08 |
| 스타트업 백엔드 개발 인턴 2달차 후기 - 글로랑 (3) | 2025.08.23 |
| 글로랑 인턴 시작 - 일학습병행 첨단산업 (2) | 2025.08.23 |