最佳化 Amazon ECS 任務啟動時間 - Amazon Elastic Container Service

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

最佳化 Amazon ECS 任務啟動時間

為了加快任務啟動速度,請考慮下列建議。

  • 快取容器映像和 binpack 執行個體

    如果您使用 EC2 啟動類型,則可以設定 Amazon ECS 容器代理程式提取行為至 ECS_IMAGE_PULL_BEHAVIORprefer-cached。如果沒有快取的映像,則會從遠端提取映像。否則,將使用執行個體上的快取映像,容器的自動映像清除已關閉,以確保快取映像不會移除。這可減少後續啟動的影像提取時間。當您的容器執行個體具有高任務密度時,快取的效果會更大,您可以使用binpack置放策略進行設定。快取容器映像對於通常具有大型 (數十 GBs容器映像大小的視窗型工作負載特別有用。使用binpack置放策略時,您也可以考慮使用彈性網路介面 (ENI) 中繼,在每個容器執行個體上放置具有awsvpc網路模式的更多任務。ENI 中繼會增加您可以在 awsvpc 模式下執行的任務數量。例如,可能支援僅同時執行 2 個任務的 c5.large 執行個體,可以使用 ENI 中繼執行最多 10 個任務。

  • 選擇最佳網路模式

    雖然網路awsvpc模式很理想,但此網路模式本質上可以增加任務啟動延遲,因為對於awsvpc模式中的每個任務,Amazon ECS 工作流程需要透過叫用 Amazon EC2 APIs 來佈建和連接 ENI,這些 API 會為您的任務啟動增加幾秒鐘的額外負荷。相反地,使用awsvpc網路模式的主要優點是每個任務都有一個安全群組來允許或拒絕流量。這表示您有更大的彈性,可以更精細地控制任務和服務之間的通訊。如果部署速度是您的優先順序,您可以考慮使用 bridge 模式來加速任務啟動。如需詳細資訊,請參閱為 Amazon ECS 任務配置網路介面

  • 追蹤任務啟動生命週期以尋找最佳化機會

    通常很難知道應用程式啟動所需的時間。在應用程式啟動期間啟動容器映像、執行啟動指令碼和其他組態,可能需要相當驚人的時間。您可以使用任務中繼資料端點來張貼指標,在您的應用程式準備好提供流量時,追蹤從 ContainerStartTime到 的應用程式啟動時間。使用此資料,您可以了解應用程式對總啟動時間的貢獻,並尋找可以減少不必要的應用程式特定額外負荷並最佳化容器映像的區域。如需詳細資訊,請參閱最佳化 Amazon ECS容量和可用性

  • 選擇最佳執行個體類型 (適用於 EC2 啟動類型)

    選擇正確的執行個體類型是根據您在任務上設定的資源保留 (例如 CPU、記憶體)。因此,調整執行個體的大小時,您可以計算單一執行個體上可以放置多少任務。妥善放置任務的簡單範例,是在 m5.large 執行個體中託管 4 個需要 0.5 vCPU 和 2GB 記憶體保留的任務 (支援 2 個 vCPU 和 8 GB 記憶體)。此任務定義的保留充分利用執行個體的資源。