HTTP 503 狀態碼 (服務無法使用) - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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 服務配額