Skip to content

[FIX] Gemini rate_limit 대응 — backoff 강화 + host 단위 circuit breaker #215

Description

@juhy0987

Parent: #214

배경

#214 의 sub-issue. LLM 룰 자동 생성 (internal/processor/parser/rule/llmgen/) 이 라이브 9분 동안 [llm:gemini:rate_limit] 188건 실패. 같은 host 에 대해 in-flight 차단 (117건) 도 일부 동작하나 rate_limit hit 자체를 줄이는 backoff/회피 로직이 부족.

작업 내용

  1. Backoff 강화 — Gemini API 호출 실패 시 exponential backoff (initial 5s → max 5min, jitter)
  2. Circuit breaker (host 단위) — 동일 host 의 LLM 호출이 N회 연속 rate_limit hit 시 일정 시간 (예: 10분) 차단
  3. rate_limit 응답 감지 — Gemini SDK 의 rate-limit 응답 코드/문자열을 명확히 구분해서 일반 에러와 다르게 처리

영향 영역

  • internal/processor/parser/rule/llmgen/ — generator 의 호출 wrapper / retry 로직
  • pkg/llm/measured.go — 가능하면 provider-agnostic 한 backoff/breaker 추가
  • internal/processor/parser/rule/llmgen/generator.go — in-flight 차단 + circuit breaker 통합

완료 조건

  • Gemini rate_limit hit 시 backoff 가 실제로 호출 간격을 늘림 (라이브 로그에서 검증)
  • 같은 host 가 N회 연속 실패 시 circuit breaker 로 차단 → 다른 host 처리 우선
  • 단위 테스트: rate_limit 응답 시뮬레이션으로 backoff/breaker 동작 검증

참고

  • 진단 로그: debug.log
  • 관련 코드: internal/processor/parser/rule/llmgen/generator.go, pkg/llm/measured.go

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions