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

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

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

503 狀態碼 HTTP (服務無法使用) 通常表示原始伺服器的效能問題。在極少數情況下,它表示由於邊緣位置的資源限制, CloudFront 暫時無法滿足請求。

如果您使用的是 Lambda@Edge 或 CloudFront Functions,問題可能是執行錯誤或 Lambda@Edge 超過限制錯誤。

原始伺服器沒有足夠的容量來支援請求率

當原始伺服器無法使用或無法提供傳入請求時,它會傳回 HTTP 503 狀態碼 (服務無法使用)。 CloudFront 然後將錯誤轉傳給使用者。若要解決這個問題,請嘗試下列解決方案:

  • 如果您使用 Amazon S3 作為原始伺服器

    • 您可以每秒為每個分割的 Amazon S3 字首傳送 3,500 個PUT/COPY/POST/DELETE or 5,500 GET/HEAD請求。當 Amazon S3 傳回 503 Slow Down 回應時,這通常表示針對特定 Amazon S3 字首的請求率過高。

      由於請求率適用於 S3 儲存貯體中的每個字首,因此物件應分散到多個字首。隨著字首上的請求率逐漸增加,Amazon S3 會擴展以分別處理每個字首的請求。因此,儲存貯體處理的整體請求率是字首數的倍數。

    • 如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的最佳化 Amazon S3 效能

  • 如果您使用 Elastic Load Balancing 作為原始伺服器

    • 確保您的後端執行個體可以回應運作狀態檢查。

    • 請確定您的負載平衡器和後端執行個體可以處理負載。

    如需詳細資訊,請參閱:

  • 如果您使用自訂原始伺服器

    • 檢查應用程式日誌,以確保您的原始伺服器有足夠的資源,例如記憶體、 CPU和磁碟大小。

    • 如果您使用 Amazon EC2做為後端,請確定執行個體類型具有適當的資源來滿足傳入的請求。如需詳細資訊,請參閱 Amazon EC2使用者指南 中的執行個體類型

  • 如果您使用API閘道

    • 當API閘道API無法接收回應時,此錯誤與後端整合有關。後端伺服器可能是:

      • 超過容量且無法處理新的用戶端請求。

      • 臨時維護中。

    • 若要解決此錯誤,請查看您的API閘道應用程式日誌,以判斷後端容量、整合或其他問題。

CloudFront 由於邊緣位置的資源限制,造成錯誤

在極少數情況下,您會收到此錯誤, CloudFront 無法將請求路由到下一個最佳可用邊緣位置,因此無法滿足請求。當您在 CloudFront分佈上執行負載測試時,此錯誤很常見。為協助防止此種情況,請遵循 負載測試 CloudFront 準則,以避免 503 (容量超過) 錯誤。

如果您的生產環境中發生這種情況,請聯絡 AWS Support

Lambda@Edge 或 CloudFront 函數執行錯誤

如果您使用的是 Lambda@Edge HTTP 或 CloudFront Functions,503 狀態碼可以指出您的函數傳回執行錯誤。

如需如何識別和解決 Lambda@Edge 錯誤的詳細資訊,請參閱 測試和偵錯 Lambda@Edge 函數

如需測試 CloudFront 函數的詳細資訊,請參閱 測試功能

超過 Lambda@Edge 限制

如果您使用的是 Lambda@Edge,503 狀態碼可以指示 Lambda HTTP 傳回錯誤。此錯誤可能由以下其中一項原因造成:

  • 函數執行的數目超過 Lambda 設定為限流 AWS 區域 (並行執行或調用頻率) 中執行的其中一個配額。

  • 此函數已超過 Lambda 函數逾時配額。

如需 Lambda@Edge 配額的詳細資訊,請參閱 Lambda@Edge 的配額。如需如何識別和解決 Lambda@Edge 錯誤的詳細資訊,請參閱 測試和偵錯 Lambda@Edge 函數。您也可以在 AWS Lambda 開發人員指南 中查看 Lambda 服務配額