본문으로 건너뛰기

Request Rate Limit

RateLimit Header


  • RateLimit-Policy: <policy>[, <policy>]
    • <policy>: <limit>;w=<window>[;policy="<description>"]
      • <limit>: 제한량
      • <window>: 윈도우 기간 (초)
      • <description>: 정책 설명
      • 그 외에 정책을 설명하기위한 정보를 ;<key>=<value> 형태로 추가할 수 있지만 정확한 정보를 찾지 못했습니다.
  • RateLimit: limit=<limit>, remaining=<remaining>, reset=<reset>
    • <limit>: 제한량
    • <remaining>: 남은 요청량
    • <reset>: 다음 리셋까지 남은 시간 (초), 리셋이 되면 limitremaining 모두 바뀔 수 있습니다.
HTTP/1.1 200 OK
Content-Type: application/json
RateLimit-Policy: 100;w=60;policy="sliding window log"
RateLimit: limit=100, remaining=99, reset=1
...

위의 예시는 아래와 같이 해석됩니다.

  • 60 초의 윈도우 시간동안 최대 100 회 요청 가능한 Sliding Window 정책
  • 99 회 추가 요청 가능
  • 1 초 후 리셋

Leaky Bucket

Token Bucket

Fixed Window Counter

Sliding Window Log

Sliding Window Log는 요청이 오면

  • 윈도우 시간 이전의 로그 삭제
  • 윈도우 시간 내에 로그 수 확인
  • 로그 수가 제한량보다
    • 많거나 같으 경우 요청 거부
    • 적은 경우 타임스탬프를 로그에 추가 후 요청 처리

Sliding Window Counter