

# Amazon ECS 托管实例的实例选择最佳实践
<a name="managed-instances-instance-selection-best-practices"></a>

为 Amazon ECS 托管实例工作负载选择合适的实例配置对于优化性能、成本和资源利用率至关重要。Amazon ECS 提供灵活的实例选择选项，使您能够在应用程序需求和成本效益之间取得平衡。以下最佳实践可帮助您为容器化工作负载做出明智的实例选择决策。

1. 使用默认实例选择

   未指定 `instanceRequirements` 时，Amazon ECS 会选择满足以下任务定义和服务参数要求的最具成本效益的实例：

   任务定义
   + operatingSystemFamily
   + cpuArchitecture
   + cpu
   + memory

   服务定义
   + placementConstraints
   + placementStrategy

1. 对大多数工作负载，请使用基于属性的选择，以提高灵活性并提高放置成功率

   基于属性的实例选择允许 Amazon ECS 从满足指定要求的更广泛实例类型中进行选择。这种方法提高了任务成功放置的可能性，并通过允许 Amazon ECS 在启动时选择最具成本效益的可用实例来实现更佳的成本优化。

1. 只有当应用程序具有特定硬件要求时，才使用特定实例类型

   对于需要特定硬件功能（例如，GPU 加速、高频处理器或专用网络功能）的工作负载，请保留特定实例类型选择。对于通用应用程序，基于属性的选择通常能够提供更好的灵活性和成本优化。

1. 选择平衡的资源以避免过度预置和不必要的成本

   选择与您的应用程序的 CPU 和内存需求非常匹配的实例配置。避免过度预置资源，因为这会导致成本增加和效率降低。使用监控数据了解您的实际资源利用模式，并相应地调整实例选择。

1. 为具有不同工作负载的应用程序混合使用实例类型，以平衡性能和成本

   对于具有不同性能要求或不同工作负载模式的应用程序，请考虑使用具有不同实例配置的多个容量提供程序。这种方法使您能够通过为应用程序的不同组件使用合适的实例类型来优化成本，同时在需要时保持性能。

1. 在使用配置为 `capacityOptionType=Reserved` 的 Amazon ECS 托管实例容量提供程序时，请注意 ECS 服务使用 `minimumHealthyPercent=100%` 和 `maximumPercent=200%` 默认部署配置，这意味着 ECS 部署会尝试在停止旧任务之前启动新任务，并暂时需要高达稳态容量 200% 的容量。如果您的服务在稳定状态下消耗了 EC2 容量预留中的所有可用容量，则部署将失败，因为在部署过程中没有额外的容量可用于启动新任务。为避免这种情况，请将 `minimumHealthyPercent` 设置为低于 100%（例如 75%），并考虑将 `maximumPercent` 设置为 100%，以确保服务在启动新任务之前停止任务，从而在启动替换任务之前释放容量，从而成功完成部署。此外，请考虑定期监控容量利用率，以保持预留空间以适应部署和应对流量高峰。