跳至內容

如何對 CloudFront "503 Service Unavailable" 錯誤進行疑難排解?

1 分的閱讀內容
0

我的 Amazon CloudFront 發佈項目收到 "503 Service Unavailable" 錯誤。

解決方法

若要解決 HTTP 503 狀態代碼 (服務無法使用) 問題,請針對您的錯誤採取下列動作。

原始伺服器的 HTTP 503 錯誤

如果原始伺服器發生效能問題或伺服器無法使用,那麼您可能會收到 "503 Service Unavailable" 錯誤。

若要對此問題進行疑難排解,請參閱原始伺服器沒有足夠的容量來支援請求速率。

Lambda@Edge 或 CloudFront 函式的 HTTP 503 錯誤

如果 AWS Lambda 函式中存在未處理的例外狀況或程式碼中存在錯誤,那麼您可能會收到 "503 Service Unavailable" 錯誤。

若要修正程式碼,請為 Lambda 函式新增記錄陳述式。檢查您的 Lambda@Edge 日誌和 CloudFront 函式日誌,以確認 CloudFront 是否正常運作。如需詳細資訊,請參閱對 Lambda 中的調用問題進行疑難排解和對 Lambda 中的執行問題進行疑難排解。

如果您超出 Lambda@Edge 配額,Lambda 會阻止 Lambda 函式執行,並且 CloudFront 將傳回 HTTP 503 錯誤。若要解決因超出配額而導致的 HTTP 503 錯誤,請參閱如何對 CloudFront 中,由 Lambda@Edge 函式引起的 502 和 503 錯誤進行疑難排解?

Amazon S3 的 HTTP 503 錯誤

如果您有整合應用程式或您的來源是 Amazon Simple Storage Service (Amazon S3),那麼您可能會收到 HTTP 500 或 503 錯誤。若要解決這些錯誤,請參閱如何對 Amazon S3 的 HTTP 500 或 503 錯誤進行疑難排解?

防止 CloudFront 快取 HTTP 503 錯誤

CloudFront 預設會將錯誤回應從來源轉送到用戶端。CloudFront 會快取來源的錯誤回應 10 秒。

如果來源的錯誤回應包含 Cache-Control 標頭,則 CloudFront 會使用相關的存留時間 (TTL) 來快取錯誤,而不是預設的 10 秒。CloudFront 不會快取自己的錯誤回應,除非在自訂錯誤回應中另有規定。您可以為 HTTP 503 錯誤建立自訂錯誤回應,並將 TTL 設為 0 秒,以防止 CloudFront 快取該錯誤。

若要最佳化快取效率,請使用 CachingOptimized 政策。此政策會將錯誤回應的最小 TTL 設定為 1 秒,而不是預設值 10 秒。如需詳細資訊,請參閱使用受管快取政策。

最佳實務是在您的應用程式中建置重試邏輯,以重試傳回 HTTP 503 錯誤的請求。所有 AWS SDK 都有內建重試機制,包含使用指數退避的演算法。此演算法在連續錯誤回應的重試之間實作越來越長的等待時間。許多指數退避演算法都使用抖動 (隨機延遲) 來防止連續衝突。如需詳細資訊,請參閱重試行為。

AWS 官方已更新 1 年前