跳至內容

如何對 Amazon S3 的 HTTP 500 或 503 錯誤進行疑難排解?

2 分的閱讀內容
0

當我向 Amazon Simple Storage Service (Amazon S3) 提出請求時,Amazon S3 傳回 5xx 狀態錯誤。

簡短說明

當您向 Amazon S3 發出請求時,可能會收到類似以下範例的錯誤訊息:

  • "AmazonS3Exception: Internal Error (Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Error; Request ID: A4DBBEXAMPLE2C4D)"
  • "AmazonS3Exception: Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; Request ID: A4DBBEXAMPLE2C4D)"

當 Amazon S3 無法立即處理請求時,會發生 "500 Internal Error" 錯誤訊息。當 S3 儲存貯體接收到大量請求時,通常會發生 "503 Slow Down" 錯誤訊息。每個分割的 Amazon S3 首碼,每秒可傳送 3,500 次 PUT/COPY/POST/DELETE 或 5,500 次 GET/HEAD 請求。但是,如果您的請求超過跨 AWS 區域複製可用的頻寬,Amazon S3 可能會回傳 "503 Slow Down" 回應。

若要解決或避免 5xx 狀態錯誤,請採取以下動作:

  • 對於提出請求的應用程式,請使用重試機制。
  • 設定您的應用程式以逐步提高請求速率。
  • 跨多個首碼分配物件。
  • 監控 5xx 錯誤回應的數量。

**注意:**當您建立首碼時,Amazon S3 不會自動為支援的請求速率指派額外資源。Amazon S3 會根據請求模式進行擴展。隨著請求速率提高,Amazon S3 會針對新的請求速率動態最佳化。

解決方法

使用重試機制

由於 Amazon S3 的分散式特性,您可以重試傳回 500 或 503 錯誤的請求。最佳實務是在向 Amazon S3 發出請求的應用程式中,建立重試邏輯。AWS SDK 已內建重試機制。

**注意:**在某些情況下,對相同金鑰的快速並行請求可能會導致 503 回應。在這些情況下,最佳實務是重試失敗的請求。

設定您的應用程式以逐步提高請求速率

高請求速率或物件請求速率突然提高,可能會導致 "503 Slow Down" 錯誤訊息。設定您的應用程式以維持請求速率,並以指數退避重試。指數退避會在連續錯誤回應的重試之間,逐步延長等待時間。此設定可讓 Amazon S3 有時間監控請求模式,並在後端進行縮減以處理請求速率。

首先,將您的應用程式設定為以較低的每秒交易請求速率開始。然後,以指數方式提高應用程式的請求速率。Amazon S3 會自動擴展以處理更高的請求速率。

將物件分散到多個首碼

請求速率適用於 Amazon S3 儲存貯體中的每個首碼。若要設定儲存貯體以處理較高的請求速率,請跨多個首碼分配物件。例如,如果您使用儲存貯體來儲存影像與影片,則可將檔案分配到以下兩個首碼:

  • mybucket/images
  • mybucket/videos

若首碼的請求速率逐漸提高,Amazon S3 會針對每個首碼分別進行擴展。因此,儲存貯體可處理雙倍的請求速率。

監控 5xx 狀態錯誤回應數量

若要監控您收到的 5xx 狀態錯誤回應數量,請使用下列其中一個選項:

對其他問題進行疑難排解

當您使用快速選項擷取已封存物件時,可能會收到以下其中一個錯誤訊息:

  • "GlacierExpeditedRetrievalNotAvailable"
  • "Glacier expedited retrievals are currently not available, please try again later"

如果處理快速 RestoreObject 請求的容量不足,就會發生這些問題。在持續高需求的期間,Amazon S3 可能會拒絕快速擷取請求,並傳回 503 錯誤訊息。使用佈建容量單位以確保隨需提供快速擷取容量。每個單位可在每 5 分鐘內至少執行三次快速擷取。每個單位提供高達 150 MBps 的擷取輸送量。您也可以使用標準大量擷取選項。

您可重試擷取。但是,仍可能遇到問題。除極端需求的情況外,無需佈建容量即可進行快速擷取。由於不斷變更以及對非佈建容量的快速擷取可用性的高需求,因此不提供快速擷取 SLA。

如果您繼續收到大量 5xx 狀態錯誤率,請聯絡 AWS Support。對於顯示 5xx 狀態錯誤代碼的失敗請求,請納入多個 Amazon S3 請求 ID 對

相關資訊

使用 S3 Storage Lens 指標提升效能

使用 Amazon CloudWatch 監控指標