대전 식품봇 · KakaoTalk · Incident Analysis

카카오톡 "응답 없음" — 원인 분석 & 해결계획

go-chatbot-server · Gemini RAG · 카카오 i 오픈빌더 스킬 연동
2026-06-08 개인용 · noindex 상태: 원인 규명 · 해결안 대기

핵심 한 줄

챗봇이 답을 만들긴 하는데 9~13초 걸리고, 카카오 스킬 응답 제한은 5초. 카카오가 5초에 끊어 "응답 없음"으로 보이고, 그 뒤 챗봇이 답을 내도 이미 늦음.

0s─── ⏱ 카카오 컷오프 5s┈┈✕ 무응답┈┈ 🤖 봇 실제 응답 9s··· 재시도 시 13s

📊실측 지연 (동일 질문 5회)

시도결과응답시간카카오 5초 내?
try1200 성공9.08s❌ 초과
try242913.20s❌ 초과
try342913.17s❌ 초과
try442913.19s❌ 초과
try542913.19s❌ 초과

성공해도 9초, 실패하면 재시도 백오프(2+4+6s)로 13초. 전부 5초 초과.

🔬원인 3가지 (영향 순)

결정적 ① 카카오 5초 동기 타임아웃 초과
카카오 i 오픈빌더 스킬은 응답을 5초 안에 받아야 함. 핸들러는 Qdrant 검색 → Gemini 생성을 동기로 끝까지 기다린 뒤 응답(9초+) → 카카오는 이미 포기.
구조 ② 콜백(useCallback) 미구현
카카오는 5초 초과 작업용 콜백 패턴(5초 내 "준비중" 즉시 응답 → 최대 1분 내 callbackUrl로 실제 답 POST)을 제공하나, 핸들러는 동기 응답만 하고 userRequest.callbackUrl을 무시. (dto의 callback_url은 구글 로그인용 — 무관)
가중 ③ 429/503로 재시도가 지연을 키움
현재 Gemini 과부하(503)+쿼터(429) 빈발 → 재시도 백오프가 카카오 입장엔 역효과(13초). API 직접호출엔 도움이나 카카오엔 독.

지금까지 고친 것 (선행)

🛠️해결계획 (권장순)

#방법효과비고
1카카오 콜백 패턴 구현근본 해결5초 내 "답변 준비중" 즉시 응답 + goroutine으로 Gemini 후 callbackUrl POST. 오픈빌더 "콜백 사용" ON 필요
2카카오 경로는 재시도 제거실패 13s→즉시콜백 없이 동기 유지 시 임시안
3쿼터 상향(유료) / 레이트 제한429 감소GEMINI_API_KEY 결제 연결
4프롬프트·RAG 축소 / 더 빠른 모델지연 단축gemini-2.5-flash-lite 등. 그래도 5초 빠듯 → 1번이 정석

결론 — 5초 안에 Gemini를 끝내는 건 현실적으로 불안정. "준비중" 먼저 보내고 비동기로 답을 채우는 콜백(#1)이 정답.