

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 最佳实践：优化应用程序服务器的数目
<a name="best-practices-autoscale"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

生产堆栈通常包含跨多个可用区分布的多个应用程序服务器。但是，传入请求的数量可能会有很大不同，具体取决于当日时间或星期几。您可以只运行足量服务器来处理预期的最大负载，而大多数情况下，您最终将为比所需容量更多的服务器容量付费。要高效运行您的站点，建议的做法是使服务器数量与当前请求卷匹配。

OpsWorks Stacks 提供了三种管理服务器实例数量的方法。
+ 手动启动并运行[全天候实例](workinginstances-starting.md)，直至其被手动终止。
+  OpsWorks Stacks 会按照用户指定的@@ [时间表自动启动和停止基于时间的实例](workinginstances-autoscaling.md)。
+ 当@@ [基于负载的实例](workinginstances-autoscaling.md)超过用户指定的负载指标（例如 CPU 或内存利用率）的阈值时， OpsWorks 堆栈会自动启动和停止。

**注意**  
在您创建并配置堆栈的基于时间和基于负载的实例后， OpsWorks Stacks 将根据指定的配置自动启动和停止这些实例。除非您决定更改实例的配置或数目，否则您无需再次接触这些实例。

**建议：**如果您正在管理具有多个应用程序服务器实例的堆栈，建议您混合使用所有三个实例类型。以下示例说明如何管理堆栈的服务器容量以处理具备以下特性的可变每日请求量。
+ 一天中的平均请求量呈正弦周期变化。
+ 最小平均请求量需要 5 个应用程序服务器实例。
+ 最大平均请求量需要 16 个应用程序服务器实例。
+ 请求量峰值通常可由一个或两个应用程序服务器实例处理。

这是一个为了方便讨论而提供的模型，但您可以轻松调整来适应请求量的任何变化，并可对其进行扩展以处理每周变化。下图介绍如何使用三个实例类型来管理此请求量。

![\[Graph showing instance types over 24 hours: time-based, load-based, and 24/7, with average load curve.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/autoscaling.png)


该示例具有以下特征：
+ 堆栈具有 3 个全天候实例，这些实例始终运行并处理基本负载。
+ 堆栈具有 12 个基于时间的实例，这些实例已配置为处理平均每日变化。

  1 个实例从 10 PM 运行至 2 AM，两个以上的实例从 8 PM 运行至 10 PM 以及从 2 AM 运行至 4 AM，以此类推。为简单起见，该图修改了每两小时的基于时间的实例数，但如果您希望实施更精细的控制，可修改每小时数量。
+ 堆栈具有足够的基于负载的实例来处理流量峰值，这已超出全天候实例和基于时间的实例可处理的范围。

  OpsWorks 只有当当前运行的所有服务器的负载超过指定指标时，堆栈才会启动基于负载的实例。未运行实例的成本最低 (由 Amazon EBS 提供支持的实例) 或没有成本 (由实例存储提供支持的实例)，因此，建议的做法是创建足量的实例以顺利处理预期的最大请求量。在本示例中，堆栈应具有至少 3 个基于负载的实例。

**注意**  
确保您拥有跨多个可用区分布的所有三个实例类型，以减小任何服务中断所带来的影响。