OneWebDesk

API Rate Limit 계산기

분당·시간당 요청 제한과 동시성 기준으로 안전 호출량과 소진 시간을 계산합니다.

API가 “분당 100요청” 같은 레이트 리밋(rate limit)을 걸어 두면, 내 요청을 어느 속도로 보내야 429(Too Many Requests)를 피할 수 있을까요? 이 계산기는 한도(요청 수)와 윈도우(초)를 입력하면 초당 허용 속도, 요청 사이의 최소 안전 간격(ms), 그리고 N개를 안전하게 다 보내는 데 걸리는 시간을 한 번에 계산해 줍니다.

배치 작업·크롤러·웹훅 재시도·대량 발송 스크립트를 설계할 때 “쉬는 시간(throttle)”을 얼마로 둘지 정확히 정할 수 있습니다. 동시 워커(concurrency)를 늘릴 때 워커당 간격이 어떻게 바뀌는지도 보여 줍니다. 응답 지연을 백분위로 분석하려면 응답시간 백분위 계산기를, 실제 요청을 만들어 테스트하려면 cURL 명령 생성기를 함께 사용하세요.

속도/간격
허용 속도1.6667 req/s
최소 안전 간격600 ms
워커당 간격600 ms (1 워커)
N개 전송 계획

N이 한 윈도우 한도를 초과합니다. 여러 윈도우로 나눠 보내야 429를 피할 수 있습니다.

N개 전송 시간300 s (05:00)
필요한 윈도우 수5
한 윈도우 내 한도 충족아니오

핵심 공식

레이트 리밋은 “윈도우(초)당 한도(요청 수)”로 정의됩니다. 여기서 모든 값이 파생됩니다.

  • 허용 속도 = 한도 ÷ 윈도우 (req/s)
  • 최소 안전 간격 = 윈도우 ÷ 한도 (초) = 1000 × 윈도우 ÷ 한도 (ms)
  • 워커당 간격 = 동시 워커 수 × (윈도우 ÷ 한도) — 워커가 많을수록 각자는 더 천천히 보내야 전체 속도가 유지됩니다.
  • N개 전송 시간 = N ÷ (한도 ÷ 윈도우) = N × 윈도우 ÷ 한도 (초)

예시: 분당 100요청

한도 100, 윈도우 60초라면 허용 속도는 약 1.67 req/s, 최소 간격은 600ms입니다. 요청마다 600ms 이상 띄우면 안전합니다.

  • 500개를 보내려면 500 × 60 ÷ 100 = 300초(=05:00)가 걸립니다.
  • 한 윈도우(60초)에 한도 100을 넘기면 429가 발생합니다. 500개라면 최소 ceil(500/100)=5개 윈도우가 필요합니다.
  • 동시 워커 4개면 워커당 간격은 4 × 600ms = 2400ms로 두어야 합계 속도가 한도를 넘지 않습니다.

버스트와 토큰 버킷

많은 API는 평균 속도 외에 “버스트(burst)” 여유를 둡니다. 이 도구는 보수적으로 균등(steady) 속도를 가정하므로, 버스트를 허용하는 토큰 버킷 방식 API에서는 더 공격적으로 보낼 수 있습니다. 그래도 안전 간격을 지키면 429를 거의 확실히 피할 수 있습니다.

실제 API들의 공개 레이트 리밋

이 값들을 그대로 한도·윈도우 칸에 넣어 보면 각 API에 맞는 안전 간격이 바로 나옵니다(공식 문서 기준의 대표값이며 요금제·엔드포인트별로 다를 수 있음).

API한도 / 윈도우≒ 안전 간격
GitHub REST (인증, core)5,000 / 3,600초720ms
GitHub Search30 / 60초2,000ms
Stripe (live)100 / 1초10ms
Slack Web API (Tier 2)20 / 60초3,000ms
OpenWeatherMap (무료)60 / 60초1,000ms

429 응답 헤더 읽는 법

계산기로 간격을 정해도, 429가 떴을 때는 추측하지 말고 응답 헤더를 따라야 합니다. 자주 쓰이는 헤더는 다음과 같습니다.

헤더의미
Retry-After다음 요청까지 기다릴 초(예: 30) 또는 HTTP 날짜. 있으면 이 값을 최우선으로 따르세요.
X-RateLimit-Limit현재 윈도우의 한도. 이 값을 계산기의 “한도”에 넣으세요.
X-RateLimit-Remaining남은 호출 수. 0이면 윈도우가 리셋될 때까지 멈추세요.
X-RateLimit-Reset윈도우가 리셋되는 시각(보통 Unix epoch 초). 이 시각까지 대기하면 한도가 복구됩니다.

흔한 실수 / 함정

  • 이 계산기의 안전 간격은 윈도우 안에서 한도를 몰아 쓰지 않는 균등(steady) 속도를 가정합니다. 윈도우 초반에 한도를 다 써 버린 뒤 “경계 지나면 리셋되겠지” 하고 다음 윈도우 시작과 함께 또 몰아 보내면, 두 윈도우 경계에 걸쳐 순간 속도가 2배가 되어 슬라이딩 윈도우 리미터에서 429를 맞습니다. 평균이 아니라 매 순간의 속도를 한도 아래로 유지하세요.
  • Retry-After가 응답에 들어 있으면 계산기 값이 아니라 그 헤더를 따르세요. 계산기 간격은 정상 운영용 페이싱이고, 헤더는 서버가 지금 강제하는 실제 대기 시간입니다.

자주 묻는 질문

한도나 윈도우를 0으로 두면 어떻게 되나요?
한도와 윈도우가 모두 0보다 커야 계산이 가능합니다(0으로 나누기 방지). 둘 중 하나라도 0 이하이면 계산 결과 대신 안내가 표시됩니다.
최소 안전 간격을 꼭 지켜야 하나요?
토큰 버킷처럼 버스트를 허용하는 API라면 잠깐은 더 빨리 보낼 수 있습니다. 다만 안전 간격을 지키면 어떤 방식의 리밋이든 429를 피할 수 있어 가장 안전합니다.
동시 워커가 늘면 왜 워커당 간격이 길어지나요?
전체 합계 속도는 한도로 고정되어 있기 때문입니다. 워커 C개가 동시에 보내면 각 워커는 단일 간격의 C배만큼 띄워야 합계가 한도와 같아집니다.
N이 한도를 넘으면 무엇을 봐야 하나요?
한 윈도우 안에 다 보낼 수 없다는 뜻입니다. 필요한 윈도우 수 ceil(N/한도)와 전체 전송 시간을 참고해 작업을 여러 윈도우에 나눠 배치하세요.
입력한 값이 서버로 전송되나요?
아니요. 모든 계산은 브라우저 안에서만 수행되며, 입력한 한도·윈도우·요청 수·워커 수는 어디로도 전송되거나 저장되지 않습니다.

관련 도구

HTTP / API