인바운드 REST API 속도 제한

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기3분
  • 과도한 인바운드 REST API 요청을 방지하려면 시간당 처리되는 인바운드 REST API 요청 수를 제한하는 규칙을 설정합니다. 특정 사용자, 특정 역할이 있는 사용자 또는 모든 사용자에 대한 요청을 제한하는 규칙을 만들 수 있습니다.

    주:
    요청이 인스턴스에 도달하면 각 노드는 사용자당 속도 제한 수를 유지합니다. 30초마다 카운트가 데이터베이스에 커밋됩니다. 따라서 속도 제한 규칙이 최대 30초 동안 적용되지 않을 수 있습니다.

    요율 제한 우선순위

    인바운드 REST API 요청이 동일한 자원에 대한 여러 속도 제한 규칙과 일치하는 경우 다음과 같이 속도 제한 우선순위가 적용됩니다.
    • 단일 사용자에 대해 설정된 규칙은 모든 사용자에 대한 규칙과 역할이 있는 사용자에 대한 규칙을 재정의합니다.
    • 모든 사용자에 대한 역할 재정의 규칙이 있는 사용자에 대해 설정된 규칙입니다.
    이 예시에는 동일한 REST API 자원에 대해 다음과 같은 네 가지 속도 제한 규칙이 있습니다. GET /now/v2/table/incident:
    요율 제한 규칙
    이러한 속도 제한 규칙은 다음 순서로 적용됩니다.
    1. 사용자별 인시던트 제한은 시간당 최대 10개의 요청을 제출할 수 있는 ITIL 사용자에게 적용됩니다.
    2. 임포트 관리자로 인시던트 제한 역할은 import_admin 역할이 있는 각 사용자에게 적용됩니다. import_admin 역할이 있는 각 사용자는 시간당 최대 3개의 요청을 제출할 수 있습니다.
    3. itil로 인시던트 제한 역할은 itil 역할을 가진 각 사용자에게 적용됩니다. itil 역할을 가진 각 사용자는 시간당 최대 5개의 요청을 제출할 수 있습니다.
    4. 인시던트 제한은 모든 사용자에게 적용됩니다. 각 사용자는 시간당 최대 2개의 요청을 제출할 수 있습니다.

    ITIL 사용자가 GET /now/v2/table/incident 요청을 수행하면 요청은 인시던트 제한, ITIL 역할별 인시던트 제한, 사용자 별 인시던트 제한 등 세 가지 규칙의 기준과 일치합니다. 다른 규칙보다 우선하므로 사용자별 인시던트 제한 규칙만 적용됩니다. 따라서 ITIL 사용자는 시간당 최대 10개의 요청을 제출할 수 있습니다.

    사용자에게 REST API 자원에 대한 여러 요율 제한 규칙의 기준과 일치하는 역할이 두 개 이상 있는 경우, 가장 적은 수의 요청을 허용하는 규칙이 자원에 대한 사용자의 요청에 적용됩니다. 위 그림의 예시 규칙에서는 사용자 Abel Tuter에게 import_admin 역할과 itil 역할이 모두 있다고 가정합니다. Abel Tuter가 요청을 제출하면 관리자 역할에 따라 인시던트 제한 규칙과 itil 역할에 따라 인시던트 제한 규칙 모두에 대한 기준을 충족합니다. 가장 적은 수의 요청을 허용하므로 관리자별 인시던트 제한 역할 규칙만 적용됩니다. 따라서 Abel Tuter는 시간당 최대 3개의 요청을 제출할 수 있습니다.

    REST API 응답 헤더

    또는 Postman과 같은 HTTP 클라이언트를 사용하여 REST API 탐색기 사용 인바운드 REST API 요청을 생성할 수 있습니다. 요청이 속도 제한 규칙과 일치하면 여러 HTTP 응답 헤더가 속도 제한에 대한 정보를 제공합니다.
    • X-RateLimit-Limit 는 시간당 허용되는 요청 수를 표시합니다.
    • X-RateLimit-Reset 은 다음 예약된 재설정까지 Unix 시간을 표시합니다.
    • X-RateLimit-Rule 은 적용 중인 속도 제한 규칙의 sys_id 표시합니다.

      요율 제한 응답 헤더

    요청이 요율 제한을 초과하여 거부되면 시스템은 요율 제한에 대한 응답 헤더와 함께 다음 이후에 다시 시도 응답 헤더를 반환합니다. 다음 이후에 다시 시도 응답 헤더에는 요율 제한을 초과하지 않도록 요청을 재시도할 수 있는 시간(초)이 표시됩니다. 다음 오류 응답이 반환됩니다.
    {
        "error": {
            "message": "Rate limit exceeded",
            "detail": "Rate limit of 10 requests per hour for Table API exceeded"
        },
        "status": "failure"
    }

    거부된 요청의 상태는 429 요청이 너무 많습니다.

    REST 응답 상태 429 요청이 너무 많음