

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

# 最佳化 Amazon ECS 任務啟動時間
<a name="task-recommendations"></a>

 為了加速任務啟動，建議考量下列事項。
+ 

**快取容器映像與 binpack 執行個體**  
<a name="recommend-cache-images"></a> 如果使用 EC2，您可以將 Amazon ECS 容器代理程式提取行為設定為 `ECS_IMAGE_PULL_BEHAVIOR`: `prefer-cached`。如果沒有快取映像，將會從遠端提取映像。否則，將使用執行個體上的快取映像。為了確保快取映像不會被移除，容器會停用自動映像檔清理功能。如此便能縮減後續啟動時的映像檔拉取時間。當容器執行個體具有高任務密度時，快取的效果會更大，您可以使用 `binpack` 置放策略來設定這種高密度任務。快取容器映像特別適用於通常具有大型 (數十 GB) 容器映像大小的 Windows 型工作負載。使用 `binpack` 置放策略時，您也可以考慮使用彈性網路介面 (ENI) 主幹功能，在每個容器執行個體上置放採用 `awsvpc` 網路模式的更多任務。ENI 主幹功能會增加可在 `awsvpc` 模式下執行的任務數量。例如，一個原本僅能同時執行 2 個任務的 c5.large 執行個體，在啟用 ENI 主幹功能後，可執行的任務數量上限將提升至 10 個。
+ 

**選擇最佳網路模式**  
<a name="recommend-network-mode"></a>雖然在許多情況下 `awsvpc` 網路模式都是理想的選擇，但此網路模式本質上可以增加任務啟動延遲，因為對於 `awsvpc` 模式中的每個任務，Amazon ECS 工作流程需要透過調用 Amazon EC2 API 來佈建與連接 ENI，這會為任務啟動增加數秒的額外負荷。相反地，使用 `awsvpc` 網路模式的主要優勢是每個任務都有安全群組來允許或拒絕流量。這表示您能以更精細的層級，彈性控制任務與服務之間的通訊。如果部署速度是優先考量，您可以考慮使用 `bridge` 模式來加速任務啟動。如需詳細資訊，請參閱[為 Amazon ECS 任務配置網路介面](task-networking-awsvpc.md)。
+ 

**追蹤任務啟動生命週期以尋找最佳化機會**  
<a name="recommend-track-starttime"></a>應用程式的啟動時間往往難以掌握。在應用程式啟動過程中，啟動容器映像、執行啟動指令碼及其他組態，都可能耗費大量時間。您可以使用任務中繼資料端點來發布指標，追蹤應用程式的啟動時間 (從容器中繼資料回應中的 `StartedAt`，到任務或服務的 `StartedAt` 時間)。透過這些資料，您能明確掌握應用程式對整體啟動時間的影響，並找出可減少不必要的應用程式專屬額外負荷的環節，進一步最佳化容器映像。如需詳細資訊，請參閱[Amazon ECS 自動擴展與容量管理最佳實務](capacity-availability.md)。
+ 

**選擇最佳執行個體類型 (針對 EC2)**  
<a name="recommend-instance-type"></a>根據您在任務上設定的資源保留量 (例如 CPU、記憶體)，選擇正確的執行個體類型。因此，調整執行個體大小時，您能計算可在單一執行個體上置放多少個任務。妥善置放任務的簡單範例：在 m5.large 執行個體 (支援 2 個 vCPU 與 8 GB 記憶體) 中託管 4 個任務，每個任務需要 0.5 個 vCPU 與 2 GB 的記憶體保留量。此任務定義的保留量會充分利用執行個體的資源。