본문 바로가기
C.W.K.
Stream
Lesson 06 of 08 · published

Rate Limits 와 backoff

~22 min · rate-limits, tpm, rpm, backoff

Level 0Tokenizer
0 XP0/54 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Rate limit 은 벌이 아니라 API 용량을 나눠 쓰기 위한 예산이야. 분당 token 수인 TPM 과 분당 요청 수인 RPM 이 따로 적용돼. 모든 사용자가 API 를 안정적으로 쓸 수 있게 만든 규칙이니 우회하려 하지 말고 그 범위 안에서 설계해.

응답 header 를 먼저 읽어

성공한 응답에도 x-ratelimit-remaining-requestsx-ratelimit-remaining-tokens header 가 들어와. 429 오류가 난 뒤에야 멈추지 말고, 남은 양을 읽어 미리 속도를 낮춰. 20% 아래로 내려가면 동시 요청 수를 절반으로 줄이고, 80% 위로 회복하면 다시 늘리는 식으로 조절할 수 있어.

429 에는 jitter 를 섞은 지수 backoff

1 초에서 시작해 대기 시간을 두 배씩 늘리고, ±20% jitter 를 섞어 최대 다섯 번 다시 시도해. Retry-After header 가 있으면 그 값을 우선해. 분당 100 건 넘게 보내는 client 라면 jitter 가 특히 중요해. 모든 요청이 동시에 다시 몰리면 thundering herd 가 생기거든.

Code

Rate-limit header 읽기·text
x-ratelimit-limit-requests: 5000
x-ratelimit-limit-tokens: 5000000
x-ratelimit-remaining-requests: 4999
x-ratelimit-remaining-tokens: 4999979
x-ratelimit-reset-requests: 12ms
x-ratelimit-reset-tokens: 362ms

External links

Exercise

429 응답에 지수 backoff 를 적용하는 작은 wrapper 를 만들어. 1 초에서 시작해 두 배씩 늘리고, ±20% jitter 를 섞어 최대 다섯 번 다시 시도해. Retry-After header 가 있으면 그 값을 우선하고, 실제 대기 시간을 매번 기록해 제대로 기다리는지 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.