이 문서에서는 Compute Engine의 동시 작업 한도와 관련하여 rateLimitExceeded
오류로 인해 발생하는 문제를 해결하는 방법을 설명합니다.
rateLimitExceeded
오류의 원인을 파악하려면 다음 문제 해결 단계를 따르세요.
-
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
Compute Engine API에서 생성된 오류 로그를 필터링하려면 쿼리 편집기에 다음 로깅 쿼리를 입력합니다.
log_id("cloudaudit.googleapis.com/activity") protoPayload.serviceName="compute.googleapis.com" protoPayload.response.error.code=403 protoPayload.status.message="Rate Limit Exceeded"
필터링된 오류 로그는 다음과 같이 표시됩니다.
"protoPayload":{ "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "status": { "message": "Rate Limit Exceeded" } "serviceName": "compute.googleapis.com", "methodName": "METHOD_NAME", ... ... "response": { "error": { "message": "Rate Limit Exceeded", "code": 403, "errors": [ { "message": "Rate Limit Exceeded", "reason": "rateLimitExceeded", "domain": "usageLimits" } ] }, "@type": "type.googleapis.com/error" }, "resourceLocation": { "currentLocations": [ "LOCATION" ] }, ... ...
오류 세부정보에는 다음 값이 포함됩니다.
METHOD_NAME
: 서비스 메서드 또는 작업의 이름입니다. API 호출의 경우 이 이름은 API 메서드의 이름이어야 합니다.LOCATION
: 리소스의 위치입니다. 리전, 영역 또는 전역일 수 있습니다. 예를 들어currentLocations: "us-central1"
(지역) 또는currentLocations: "us-central1-a"
항목은 지역이"us-central1"
또는currentLocations: "global"
임을 나타냅니다.
오류 로그에서 연결된
methodName
값을 식별합니다. 이 이름은 비율 제한이 초과된 API 메서드를 나타냅니다(예:v1.compute.instances.stop
).감사 로그에서 관련 위치를 찾습니다.
Concurrent operations per project
할당량 및 한도를 확인합니다.콘솔
Google Cloud 콘솔에서 할당량 페이지로 이동합니다.
할당량 페이지에는 프로젝트의 할당량 사용 및 한도가 표시됩니다. 기본적으로 목록은 가장 많이 사용된 할당량이 먼저 표시되도록 정렬되므로 초과될 위험이 있는 한도를 확인하는 데 유용합니다.
목록을 필터링하고 특정 할당량의 사용량과 한도를 보려면 필터 필드에서 할당량 또는 측정항목을 선택합니다.
예를 들어
Concurrent global operations per project operation type
라는 이름으로 할당량을 선택하거나Service: Compute Engine API
,type: System Limit
, 키워드concurrent
를 선택하여 모든 동시 작업 할당량을 표시합니다. 필터링하면 동시 할당량 목록이 제공됩니다. 이 목록에서 영향을 받는 할당량을 검색할 수 있습니다. 특정 작업의 할당량을 필터링하려면 필터 쿼리에 측정기준을 추가하고 operation_type (감사 로그에 methodName으로 표시됨)을 선택합니다.예를 들어
instances.stop
작업의 할당량 사용과 한도를 확인하려면instances_stop
을 선택합니다.특정 리전의 할당량을 필터링하려면 필터 쿼리에 측정기준을 추가하고 리전 (감사 로그에 currentLocations로 표시됨)을 선택합니다.
예를 들어
us-central1
리전의 할당량 사용량과 한도를 확인하려면us-central1
을 선택합니다.필터 region 및 operation_type을 함께 사용하여 특정 지역에서 특정 작업의 할당량 사용량과 한도를 확인할 수 있습니다.
gcloud
Google Cloud CLI를 사용하여 동시 작업 할당량 사용과 한도를 볼 수 있습니다.
이 방식을 사용하려면 알파 명령어 구성요소를 설치했는지 확인합니다. Cloud Shell을 사용하여 Google Cloud와 상호작용하는 경우 Google Cloud CLI가 설치됩니다.
작업 할당량을 보려면 다음 명령어를 사용합니다.
gcloud alpha services quota list \ --service=compute.googleapis.com \ --consumer=projects/PROJECT_ID
PROJECT_ID
를 할당량을 보려는 프로젝트의 ID로 바꿉니다.이러한 할당량은 일반적으로 다음 두 가지 카테고리로 분류됩니다.
- 전역 또는 리전
- 프로젝트당 또는 작업 유형별 프로젝트당
자세한 내용은 동시 작업 할당량 그룹을 참고하세요.
할당량의 사용량 차트를 확인합니다. 오류 로그 기간 동안 사용량이 할당량 한도에 근접하거나 이를 초과하면 할당량 또는 시스템 한도가 초과된 것입니다.
현재 및 최대 사용량을 보여주는 차트를 보려면 할당량으로 이동한 다음
모니터링을 클릭합니다. 표 끝까지 오른쪽으로 스크롤해야 할 수도 있습니다.모니터링 그래프에서 특정 할당량/한도와 함께
rateLimitExceeded
오류의 원인을 확인할 수 있습니다. 현재 값이 한도 값보다 높으면 시스템 한도가 초과된 것입니다. 시스템 한도는 수정할 수 없으므로 동시 작업 수를 줄이기 위해 다음 권장사항을 따르는 것이 좋습니다.다음은 몇 가지 권장사항입니다.
- 작업 완료 대기
- 오류 메시지 대신 오류 코드 사용
클라이언트 측 재시도를 최소화하여 API 비율 제한 보존
다음 방법 중 하나를 사용하여 재시도를 최소화할 수 있습니다.