

# 评估 Amazon ECS 的预测式扩缩策略
<a name="predictive-scaling-graphs"></a>

在使用预测式扩缩策略扩展服务之前，请在 Amazon ECS 控制台中查看您策略的建议和其他数据。这很重要，因为在确定预测准确之前，您不希望使用预测扩展策略来扩展实际容量。

如果服务是新的，则需要留出 24 小时让服务创建第一次预测。

当 AWS 创建预测时，会使用历史数据。如果服务还没有太多最近的历史数据，预测式扩缩可能会使用从当前可用的历史聚合中创建的聚合数据临时回填预测。预测会在策略创建日期前最多回填两周。

## 查看您的预测性扩展建议
<a name="view-predictive-scaling-recommendations"></a>

为了进行有效的分析，服务自动扩缩应至少有两个预测式扩缩策略可供比较。（但您仍可以查看单个策略的调查结果。） 创建多个策略时，您可以对使用一个指标的策略和使用另一个指标的策略进行评估。您还可以评估不同目标值和指标组合的影响。创建预测式扩缩策略后，Amazon ECS 会立即开始评估哪种策略可以更好地扩缩您的组。

**在 Amazon ECS 控制台中查看建议**

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2) 打开控制台。

1. 在 **Clusters**（集群）页面上，选择集群。

1. 在“集群详细信息”页面，找到**服务**部分，然后选择服务。

   此时系统会显示服务详细信息页面。

1. 选择**服务自动扩缩**。

1. 选择预测式扩缩策略，然后依次选择**操作**、**预测式扩缩**、**查看建议**。

   您可以查看有关策略的详细信息以及我们的建议。该建议告诉您预测性扩展策略是否比不使用预测性扩展策略做得更好。

   如果您不确定预测性扩展策略是否适合您的组，请查看**可用性影响**和**成本影响**列以选择正确的策略。每列的信息告诉您该策略的影响。
   + **可用性影响**：描述与不使用策略相比，该策略是否可以通过预置足够的任务来处理工作负载，从而避免对可用性的负面影响。
   + **成本影响**：描述与不使用策略相比，该策略是否可以通过不过度预置任务而避免对您的成本产生负面影响。过度预置会导致您的任务未得到充分利用或处于闲置状态，这只会增加对成本的影响。

   如果您有多个策略，则在以较低成本提供最大可用性优势的策略名称旁边显示**最佳预测**标签。对可用性的影响给予了更多的重视。

1. （可选）要选择所需的建议结果时间段，请从**评估期**下拉列表中选择您需要的值：**2 天**、**1 周**或**2 周**。默认情况下，评估期为过去两周。更长的评估期可为建议结果提供更多的数据点。但是，如果您的负载模式发生了变化，例如在需求异常之后，添加更多数据点可能不会改善结果。在这种情况下，您可以通过查看最新数据来获得更有针对性的建议。

**注意**  
仅为处于**仅预测**模式的策略生成建议。当策略在整个评估期内处于**仅预测**模式时，建议功能的效果会更好。如果您在**预测和扩展**模式下启动策略，稍后将其切换为**仅预测**模式，则该策略的调查结果可能会有偏差。这是因为该策略已经为实际容量做出了贡献。

## 查看预测性扩展监控图表
<a name="review-predictive-scaling-monitoring-graphs"></a>

在控制台中，您可以查看前几天、几周或几个月的预测，以便可视化策略在一段时间内的表现如何。在决定是否让策略扩展实际任务数时，您还可以使用这些信息来评估预测的准确性。

**在 Amazon ECS 控制台中查看预测式扩缩监控图表**

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2) 打开控制台。

1. 在 **Clusters**（集群）页面上，选择集群。

1. 在“集群详细信息”页面，找到**服务**部分，然后选择服务。

   此时系统会显示服务详细信息页面。

1. 选择**服务自动扩缩**。

1. 选择预测式扩缩策略，然后依次选择**操作**、**预测式扩缩**、**查看图表**。

1. 在**监控**部分中，您可以根据实际值查看策略对过去和未来负载和容量的预测。**负载**图表显示所选负载指标的负载预测和实际值。**容量**图表显示策略预测的任务数。它还包括启动任务的实际数量。垂直线将历史值与未来预测分开。创建策略后不久，这些图表可用。

1. （可选）要更改图表中显示的历史数据量，请从页面顶部的**评估期**下拉列表中选择您的首选值。评估期不会以任何方式转换此页面上的数据。它只会更改显示的历史数据量。

**比较**负载**图表中的数据**  
每条水平线代表一小时间隔内报告的一组不同的数据点：

1. **实际观测负载**使用所选负载指标的 SUM 统计数据来显示过去每小时的总负载。

1. **策略预测的负载**显示每小时的负载预测。该预测基于前两周的实际负载观测结果。

**比较**容量**图表中的数据**  
每条水平线代表一小时间隔内报告的一组不同的数据点：

1. **实际观测任务数**显示 Amazon ECS 服务过去的实际容量，这取决于您的其他扩缩策略和所选时间段内有效的最小组大小。

1. **策略预测的容量**显示当策略处于**预测和扩展**模式时，您在每个小时开始时期望拥有的基准容量。

1. **推断的所需任务数**显示将扩缩指标维持在所选择目标值的理想任务数。

1. **最小任务数**显示服务中的最小任务数。

1. **最大容量**显示服务中的最大任务数。

为了计算推断的所需容量，我们首先假设每个任务在指定目标值下的利用率相等。实际上，任务数的利用并不均等。但是，通过假设任务之间的利用率分布均匀，我们可以对所需的容量进行可能的估计。然后计算任务数需求，与您在预测式扩缩策略中使用的扩缩指标成反比。换句话说，随着任务数的增加，扩缩指标会以相同的速率减少。例如，如果任务数翻倍，则扩缩指标必定会减少一半。

推断的所需容量的公式：

 `sum of (actualServiceUnits*scalingMetricValue)/(targetUtilization)`

例如，我们在给定一小时内使用 `actualServiceUnits`（`10`）和 `scalingMetricValue`（`30`）。然后，我们采用您在预测扩展策略（`60`）中指定的 `targetUtilization`，计算同一小时的推断所需容量。这会返回值 `5`。这意味着 5 是推断出的维持容量所需的容量，与扩展指标的目标值成反比。

**注意**  
您可以使用各种杠杆来调整和提高应用程序的成本节约和可用性。  
您可以使用预测性扩展来计算基准容量，使用动态扩展来处理额外的容量。动态扩展独立于预测性扩展，会根据当前的利用率横向缩减和横向扩展。首先，Amazon ECS 会计算每个非计划的扩展策略的建议任务数。然后，它会根据提供最多任务的策略进行扩展。
要允许在负载减少时进行横向缩减，服务应始终至少有一个启用了横向缩减部分的动态扩缩策略。
您可以通过确保最小和最大容量不太严格来提高扩展性能。如果策略中包含的推荐任务数不在最小和最大容量范围内，则将阻止横向缩减和横向扩展。