다른 고객이 시간이 많이 걸리는 쿼리를 실행하는 경우에도 REST API 호출에 신속하게 응답하기 위해 뉴렐릭은 API에 과부하 보호 기능을 포함합니다.
많은 양의 데이터를 쿼리하여 상당한 리소스를 소비하는 경우 API의 응답 코드 및 헤더는 API 키에 사용할 수 있는 용량을 초과했음을 나타냅니다. 이는 대부분의 고객이 결코 볼 수 없는 드문 상황입니다. API 사용이 매우 리소스 집약적인 고객만 볼 수 있습니다.
고객은 분당 1000개의 API 호출을 할 수 있습니다.
API 응답
정상 작동 시 API는 응답에 과부하 보호 상태를 추가하지 않습니다. 어떤 조치도 취할 필요가 없습니다.
reporting period (보고 기간) 간격 동안 뉴렐릭은 각 API 요청이 시스템에 미치는 영향을 추적합니다.
과부하 보호 또는 속도 제한을 트리거할 수 있는 일반적인 경우는 다음과 같습니다.
- 사용 중인 API 키가 분당 최대 요청 수를 초과했습니다.
- 시스템이 일반적으로 과부하 상태이며 일부 계정의 보고를 줄여야 합니다.
속도 제한이 발생하는 경우 다음과 같은 일이 발생합니다.
- 추가 API 호출은 HTTP 상태 코드 429(너무 많은 요청)를 표시하며 실패합니다.
- HTTP 응답의 헤더와 본문에는 오류에 대한 추가 정보가 포함될 수도 있고 포함되지 않을 수도 있습니다.
- 보고 기간이 끝나면 API 호출이 다시 허용됩니다.
헤더
API 키의 개별 제한을 초과한 경우 API 응답에 표시되는 HTTP 헤더는 다음과 같습니다.
과부하 헤더 | 의미 |
---|---|
| 분당 최대 요청 수입니다. |
| 이 기간 동안 남은 요청 수입니다. |
| 현재 보고 기간이 끝나는 UNIX 타임스탬프(1970년 1월 1일 이후 초 수)입니다. API 요청은 이 시간 이후에 응답됩니다. |
| 이 문서에 대한 하이퍼링크를 통해 추가 정보를 즉시 얻을 수 있습니다. |
일반적인 시스템 문제가 있는 경우 API 응답에 표시되는 HTTP 헤더는 다음과 같습니다.
과부하 헤더 | 의미 |
---|---|
| 다시 시도해야 할 때까지의 시간(초)입니다. |
예
다음은 호출자가 사용 가능한 모든 리소스를 사용했으며 추가 API 호출이 2016년 2월 1일 정오에 다시 허용됨을 나타내는 API 요청의 한 예입니다.
curl -X GET 'https://api.newrelic.com/v2/applications.json' \
-H "Api-Key:$API_KEY" -i
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
...
X-RateLimit-Docs: https://docs.newrelic.com/docs/apis/rest-api-v2/requirements/api-overload-protection-preventing-429-errors
X-RateLimit-Reset: 1454313600
X-RateLimit-Remaining: 0
X-RateLimit-Limit: 1000
{}
속도 제한 오류 방지
429 오류에 대한 가장 간단한 해결책은 보고 기간이 끝날 때까지 기다렸다가 다음 API 요청을 보내는 것입니다. 그러나 쿼리를 세심하게 관리하면 처음부터 과부하 보호 오류를 방지할 수 있습니다.
리소스를 집중적으로 사용하는 쿼리를 많이 보낼 것임을 알고 있는 경우 다음 예방 조치 중 하나를 수행할 수 있습니다.
- 쿼리 빈도를 줄입니다. 특히 쿼리 빈도를 분당 1회 미만으로 합니다.(에이전트 데이터의 새로 고침 빈도)
- 매번 API에서 요청하지 않고 뉴렐릭에 데이터를 캐시합니다.
- 여러 페이지에서 메트릭 이름과 출력 결과를 요청해야 하는 경우 커서 기반 기술을 사용합니다.