本文說明如何排解 rateLimitExceeded 錯誤導致的 Compute Engine 並行作業限制問題。
如要找出 rateLimitExceeded 錯誤的原因,請按照下列疑難排解步驟操作:
-
前往 Google Cloud 控制台的「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「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 控制台的「Quotas」(配額) 頁面。
「配額」頁面會列出專案的配額用量和限制。根據預設,清單會依照您最常用的配額進行排序,方便您查看有超過上限之虞的項目。
如要篩選清單,並查看任何特定配額的使用量和限制,請在「Filter」(篩選器) 欄位中選取「Quota」(配額) 或「Metric」(指標)。
舉例來說,您可以選取名為
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 查看並行作業配額的用量和限制。
如要使用這種方法,請務必安裝 alpha 指令元件。如果您使用 Cloud Shell 與 Google Cloud互動,系統會為您安裝 Google Cloud CLI。
如要查看作業配額,請使用下列指令:
gcloud alpha services quota list \ --service=compute.googleapis.com \ --consumer=projects/PROJECT_ID
將
PROJECT_ID替換為要查看配額的專案 ID。這些配額通常分為兩類:
- 全域或區域
- 每項專案或每項專案每種作業類型
詳情請參閱「並行作業配額群組」。
查看配額的使用量圖表。如果錯誤記錄期間的用量接近或超過配額限制,表示已超出配額或系統限制。
如要查看顯示目前和尖峰用量的圖表,請前往配額,然後按一下「監控」。 你可能需要向右捲動至表格結尾。
監控圖表會顯示
rateLimitExceeded錯誤的原因,以及具體的配額/限制。如果目前值高於限制值,表示系統超出限制。 由於系統限制無法修改,建議您採用下列最佳做法,減少並行作業的數量。以下列舉幾項最佳做法:
- 等待作業完成
- 依據錯誤代碼,而非錯誤訊息
-
您可以採取下列任一方法,盡量減少重試次數: