本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon S3 的效能指南
建置從 Amazon S3 上傳和擷取物件的應用程式時,請依照我們的最佳實務指導方針來最佳化效能。我們還提供更詳細的Amazon S3 的效能設計模式 。
為了讓您在 Amazon S3 上的應用程式獲得最佳效能,建議採用下列指導方針。
主題
測量效能
最佳化效能時,請查看網路輸送量、CPU 和 DRAM 要求。根據這些不同資源的需求組合,可能值得評估不同的 Amazon EC2 執行個體類型。如需執行個體類型的詳細資訊,請參閱 Amazon EC2 使用者指南中的執行個體類型。
在測量效能時,使用 DNS 分析工具查看 HTTP 查詢時間、延遲和資料傳輸速度也很有幫助。
若要了解效能需求並最佳化您應用程式的效能,您也可以監控收到的 503 錯誤回應。監控某些效能指標可能會產生額外費用。如需詳細資訊,請參閱 Simple Storage Service (Amazon S3) 定價
監控 503 (減慢) 狀態錯誤回應的數目
若要監控您取得的 503 狀態錯誤回應數目,您可以使用下列其中一個選項:
使用 Amazon S3 的 AmazonWord CloudWatch 請求指標。The CloudWatch 請求指標包含 5xx 狀態回應的指標。如需 CloudWatch 請求指標的詳細資訊,請參閱 使用 Amazon CloudWatch 監控指標。
使用 Amazon S3 Storage Lens 的進階指標區段中提供的 503 (服務無法使用) 錯誤計數。如需詳細資訊,請參閱使用 S3 Storage Lens 指標來改善效能。
使用 Amazon S3 伺服器存取記錄 使用伺服器存取記錄,您可以篩選並檢閱接收 503 (內部錯誤) 回應的所有請求。您也可以使用 Amazon Athena 來剖析日誌。如需伺服器存取記錄日誌的詳細資訊,請參閱「使用伺服器存取記錄記錄要求」。
透過監控 HTTP 503 狀態錯誤碼的數量,您通常可以獲得對哪些字首、索引鍵或儲存貯體獲得限流請求的寶貴洞見。
水平擴展儲存連線
跨許多連線傳播請求是常用的設計模式,藉此水平擴展效能。建置高效能應用程式時,請將 Amazon S3 視為一個非常大的分散式系統,而不是像傳統儲存伺服器那樣的單一網路端點。您可以向 Amazon S3 發出多個並行請求,以達到最佳效能。將這些請求分散到不同的連線,以從 Amazon S3 獲得最大可存取的頻寬。Amazon S3 對儲存貯體的連線數沒有任何限制。
使用位元組範圍擷取
使用 Range
HTTP 物件請求中的 GET 標頭,您可以從物件擷取位元組範圍,只傳輸指定的部分。您可以對 Amazon S3 使用並行連線,從同一物件內擷取不同的位元組範圍。與單一整個物件請求相比,這可協助您實現更高的彙總傳輸量。擷取大型物件的更小範圍也可讓您的應用程式在請求中斷時改善重試時間。如需詳細資訊,請參閱「下載物件」。
位元組範圍請求的一般大小為 8 MB 或 16 MB。如果物件是使用分段上傳的 PUT,則最好使用相同的部分大小 (或至少與部分邊界對齊) 來GET它們,以獲得最佳效能。GET 請求可以直接處理個別部分;例如, GET ?partNumber=N.
對延遲敏感的應用程式重試請求
積極的逾時和重試可協助推動一致的延遲。由於 Amazon S3 的範圍很大,如果第一個請求很慢,則重試的請求可能會採取不同路徑且很快成功。The AWS SDKs 具有可設定的逾時和重試值,您可以根據特定應用程式的公差進行調整。
將 Amazon S3 (儲存) 和 Amazon EC2 (運算) 合併為相同的 AWS 區域
雖然 S3 儲存貯體名稱是全域唯一,但每個儲存貯體都存放在您建立儲存貯體時選取的區域中。若要進一步了解儲存貯體命名指南,請參閱儲存貯體概觀和儲存貯體命名規則。為了最佳化效能,我們建議您 AWS 區域 盡可能從相同 中的 Amazon EC2 執行個體存取儲存貯體。這可協助減少網路延遲和資料傳輸成本。
如需資料傳輸成本的詳細資訊,請參閱 Amazon S3 定價
使用 Amazon S3 Transfer Acceleration 將距離造成的延遲降至最低
使用 Amazon S3 Transfer Acceleration 設定快速安全的檔案傳輸 可讓用戶端與 S3 儲存貯體之間長地理距離的檔案傳輸變得迅速、簡單又安全。Transfer Acceleration 利用 Amazon CloudFront 中的全域分佈邊緣位置。資料到達節點時會經由最佳化的網路路徑而路由至 Amazon S3。Transfer Acceleration 非常適合在各大洲定期傳輸數 GB 到數 TB 的資料。也有助於從世界各地上傳至集中型儲存貯體的用戶端。
您可以使用 Amazon S3 Transfer Acceleration Speed 比較工具
使用最新版本的 AWS SDKs
The AWS SDKs 為最佳化 Amazon S3 效能的許多建議準則提供內建支援。SDKs 提供更簡單的 API,以便從應用程式內利用 Amazon S3,並定期更新以遵循最新的最佳實務。例如,SDKs 包含邏輯,可自動重試 HTTP 503 錯誤上的請求,並投資程式碼來回應和適應慢速連線。
SDKs 也提供 Transfer Manager,可自動化水平擴展連線,以在適當情況下使用位元組範圍請求,實現每秒數千個請求。請務必使用最新版本的 AWS SDKs 來取得最新的效能最佳化功能。
您也可以在使用 HTTP API REST 請求時最佳化效能。使用 REST 時API,您應該遵循屬於 SDKs 一部分的相同最佳實務。允許逾時和重試慢速請求,並有多個連線允許平行擷取物件資料。如需有關使用 REST 的資訊API,請參閱 Amazon Simple Storage Service API 參考。