인바운드 REST API 속도 제한

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기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 응답 헤더

    또는 HTTP 클라이언트(예: Postman)를 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 요청이 너무 많음