本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
最佳化 Amazon ECS 任務啟動時間
為了加速任務啟動,建議考量下列事項。
-
快取容器映像與 binpack 執行個體
如果使用 EC2,您可以將 Amazon ECS 容器代理程式提取行為設定為
ECS_IMAGE_PULL_BEHAVIOR:prefer-cached。如果沒有快取映像,將會從遠端提取映像。否則,將使用執行個體上的快取映像。為了確保快取映像不會被移除,容器會停用自動映像檔清理功能。如此便能縮減後續啟動時的映像檔拉取時間。當容器執行個體具有高任務密度時,快取的效果會更大,您可以使用binpack置放策略來設定這種高密度任務。快取容器映像特別適用於通常具有大型 (數十 GB) 容器映像大小的 Windows 型工作負載。使用binpack置放策略時,您也可以考慮使用彈性網路介面 (ENI) 主幹功能,在每個容器執行個體上置放採用awsvpc網路模式的更多任務。ENI 主幹功能會增加可在awsvpc模式下執行的任務數量。例如,一個原本僅能同時執行 2 個任務的 c5.large 執行個體,在啟用 ENI 主幹功能後,可執行的任務數量上限將提升至 10 個。 -
選擇最佳網路模式
雖然在許多情況下
awsvpc網路模式都是理想的選擇,但此網路模式本質上可以增加任務啟動延遲,因為對於awsvpc模式中的每個任務,Amazon ECS 工作流程需要透過調用 Amazon EC2 API 來佈建與連接 ENI,這會為任務啟動增加數秒的額外負荷。相反地,使用awsvpc網路模式的主要優勢是每個任務都有安全群組來允許或拒絕流量。這表示您能以更精細的層級,彈性控制任務與服務之間的通訊。如果部署速度是優先考量,您可以考慮使用bridge模式來加速任務啟動。如需詳細資訊,請參閱為 Amazon ECS 任務配置網路介面。 -
追蹤任務啟動生命週期以尋找最佳化機會
應用程式的啟動時間往往難以掌握。在應用程式啟動過程中,啟動容器映像、執行啟動指令碼及其他組態,都可能耗費大量時間。您可以使用任務中繼資料端點來發布指標,追蹤應用程式的啟動時間 (從容器中繼資料回應中的
StartedAt,到任務或服務的StartedAt時間)。透過這些資料,您能明確掌握應用程式對整體啟動時間的影響,並找出可減少不必要的應用程式專屬額外負荷的環節,進一步最佳化容器映像。如需詳細資訊,請參閱Amazon ECS 自動擴展與容量管理最佳實務。 -
選擇最佳執行個體類型 (針對 EC2)
根據您在任務上設定的資源保留量 (例如 CPU、記憶體),選擇正確的執行個體類型。因此,調整執行個體大小時,您能計算可在單一執行個體上置放多少個任務。妥善置放任務的簡單範例:在 m5.large 執行個體 (支援 2 個 vCPU 與 8 GB 記憶體) 中託管 4 個任務,每個任務需要 0.5 個 vCPU 與 2 GB 的記憶體保留量。此任務定義的保留量會充分利用執行個體的資源。