本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
HTTP 503 狀態碼 (服務無法使用)
HTTP 503 狀態碼 (服務無法使用) 通常表示原始伺服器上的效能問題。在極少數情況下,這表示 CloudFront 因為節點上的資源限制,暫時無法滿足請求。
如果您使用的是 Lambda@Edge 或 CloudFront Functions,問題可能是執行錯誤或 Lambda@Edge 超過限制錯誤。
主題
原始伺服器沒有足夠的容量來支援請求率
當原始伺服器無法使用或無法提供傳入請求時,它會傳回 HTTP 503 狀態碼 (服務無法使用)。然後 CloudFront 將此錯誤傳回給使用者。若要解決這個問題,請嘗試下列解決方案:
-
如果您使用 Amazon S3 做為原始伺服器:
-
您可以傳送每個分割 Amazon S3 字首每秒 3,500 個 PUT/COPY/POST/DELETE 或 5,500 個 GET/HEAD 請求。當 Amazon S3 傳回 503 慢速下降回應時,這通常表示針對特定 Amazon S3 字首的請求率過高。
由於請求率適用於 S3 儲存貯體中的每個字首,因此物件應分散到多個字首。隨著字首上的請求率逐漸增加,Amazon S3 會擴展以分別處理每個字首的請求。因此,儲存貯體處理的整體請求率是字首數的倍數。
-
如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的最佳化 Amazon S3 效能。
-
-
如果您使用 Elastic Load Balancing 做為原始伺服器:
-
請確定您的後端執行個體可以回應運作狀態檢查。
-
請確定您的負載平衡器和後端執行個體可以處理負載。
如需詳細資訊,請參閱:
-
-
如果您使用自訂原始伺服器:
-
檢查應用程式日誌,以確保您的原始伺服器有足夠的資源,例如記憶體、CPU 和磁碟大小。
-
如果使用 Amazon EC2 做為後端,請確保執行個體類型都有適當的資源,以符合傳入的請求。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的執行個體類型。
-
-
如果您使用 API Gateway:
-
當 API Gateway API 無法接收回應時,此錯誤與後端整合有關。後端伺服器可能是:
-
超載超過容量,無法處理新的用戶端請求。
-
臨時維護中。
-
-
若要解決此錯誤,請查看您的 API Gateway 應用程式日誌,以判斷後端容量、整合或其他問題。
-
CloudFront 由於節點上的資源限制導致錯誤
在極少數的情況下,您會收到此錯誤,CloudFront 無法將請求路由到下一個最佳的可用節點,也因此無法滿足請求。在 CloudFront 分佈中執行負載測試時,常見此錯誤。為協助防止此種情況,請遵循 負載測試 CloudFront 準則,以避免 503 (容量超過) 錯誤。
如果您的生產環境中發生這種情況,請聯絡 支援
Lambda@Edge 或 CloudFront Function 執行錯誤
如果您使用的是 Lambda@Edge 或 CloudFront Functions,HTTP 503 狀態碼可以指出您的函數傳回執行錯誤。
如需如何識別和解決 Lambda@Edge 錯誤的詳細資訊,請參閱 測試和偵錯 Lambda@Edge 函數。
如需測試 CloudFront Functions 的詳細資訊,請參閱 測試函數。
超過 Lambda@Edge 限制
如果您使用的是 Lambda@Edge,HTTP 503 狀態碼可以指出 Lambda 傳回錯誤。此錯誤可能由以下其中一項原因造成:
-
函數執行次數超過 Lambda 設定以調節 AWS 區域 (並行執行或調用頻率) 執行的其中一個配額。
-
此函數已超過 Lambda 函數逾時配額。
如需 Lambda@Edge 配額的詳細資訊,請參閱 Lambda@Edge 的配額。如需如何識別和解決 Lambda@Edge 錯誤的詳細資訊,請參閱 測試和偵錯 Lambda@Edge 函數。您也可以在 AWS Lambda 開發人員指南中查看 Lambda 服務配額。