LLM 429 속도 제한 & 워커 동시성 계산기
활성 2026 모델 60개를 대상으로 필요한 RPM, 입력 TPM(ITPM), 출력 TPM(OTPM)을 계산하고 배포 전 할당량 병목을 파악하여 풀 지터 백오프 설정을 복사하세요.
할당량 사용률 & 병목 진단
// Full-jitter exponential backoff + Retry-After guard (google/gemini-4-hydrogen)
export async function callWithRateLimitGuard<T>(
fn: () => Promise<Response>,
maxRetries = 5,
baseDelayMs = 500,
maxDelayMs = 30_000
): Promise<T> {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const res = await fn();
if (res.status !== 429 && res.status < 500) {
return (await res.json()) as T;
}
if (attempt === maxRetries) {
throw new Error(`LLM quota exhausted (HTTP ${res.status}) after ${maxRetries} retries`);
}
const retryAfterSec = Number(res.headers.get('retry-after'));
const ceiling = Math.min(maxDelayMs, baseDelayMs * 2 ** attempt);
const sleepMs = Number.isFinite(retryAfterSec) && retryAfterSec > 0
? retryAfterSec * 1000
: Math.floor(Math.random() * ceiling);
await new Promise((r) => setTimeout(r, sleepMs));
}
throw new Error('Unreachable');
}
LLM 429 속도 제한 병목이 발생하는 원리
엔터프라이즈 LLM API 게이트웨이는 RPM(분당 요청 수), ITPM(RAG 청크를 포함한 분당 입력 토큰 수), OTPM(분당 출력 완료 토큰 수)의 세 가지 토큰 버킷 한도를 동시에 적용합니다. 나머지 두 버킷이 20% 미만이더라도 어느 하나라도 초과하면 즉시 HTTP 429 오류가 반환됩니다. 할당량 산정과 함께 30일 API 비용을 계산하고 LLMEOL에서 모델 지원 종료(EOL) 일정을 확인하세요.
프로덕션 큐잉 & 재시도 안전장치
- 동시 실행 워커 수 제한: 리틀의 법칙(
Concurrency = Safe_RPM × Avg_Latency_Sec ÷ 60)에 15% 안전 여유율을 적용하여 워커 풀 크기를 제한하세요. Retry-After헤더 최우선 준수: 동시 다발적인 에이전트 재시도가 할당량 윈도우를 마비시키지 않도록 풀 랜덤 지터가 적용된 상한 지수 백오프로 폴백하세요.- 비대화형 작업을 Batch API로 분리: 야간 평가 및 대량 문서 추출 작업을 24시간 비동기 큐로 이전하면 실시간 RPM 한도를 우회하면서 LLM 토큰 비용을 50% 절감할 수 있습니다.
자주 묻는 질문
요청 수가 RPM 한도보다 훨씬 적은데도 왜 HTTP 429 오류가 발생하나요?
긴 RAG 프롬프트와 다회차 에이전트 대화 기록이 분당 요청 수(RPM) 한도에 도달하기 훨씬 전에 입력 TPM(ITPM) 또는 출력 TPM(OTPM) 토큰 버킷을 먼저 소진하기 때문입니다.
프롬프트 캐싱을 사용하면 입력 TPM 속도 제한도 늘어나나요?
프롬프트 캐싱은 입력 토큰 과금을 90%~95% 낮춰주며, 여러 프로바이더가 캐시 적중 프리픽스를 비캐시 ITPM 할당량에서 제외합니다. 정확한 비용 절감액은 LLM 비용 계산기에서 확인하세요.
고정 재시도 대기 시간 대신 풀 지터 지수 백오프를 사용하는 이유는 무엇인가요?
고정 간격 재시도는 같은 초에 제한된 병렬 워커들이 동시에 재시도 파동을 일으키게 만들지만, 풀 랜덤 지터는 TypeScript 및 Python SDK에서 재시도 시점을 복구 구간 전체에 고르게 분산시킵니다.