AWS EC2 CPU 利用率与 PHP 性能-自动扩展 CPU 阈值?

AWS EC2 CPU 利用率与 PHP 性能-自动扩展 CPU 阈值?

我正在运行一个 Amazon AWS 网络应用程序,其 CPU 利用率已经存在很大的时区差异。

我也担心病毒式传播,因为它有在我们身上发生的趋势,如果我当时睡着了,我们的服务可能会变慢或几个小时无法接通。

目前我们使用单个 EC2 实例。昨天,我们甚至遇到了停机,当时服务器正在自动更换,无法正常启动 - 我仍然不知道全部原因,可能永远也不会知道。

它不允许我包含图像,因为我需要 10 个声誉点,所以如果有人可以编辑这篇文章并将其嵌入图像,我将不胜感激:

在此处输入图片描述

我现在正在考虑用负载均衡器和自动扩展功能替换我们的前端。这将使我们能够节省资金并提高性能和可靠性,并减轻 EC2 实例故障的影响。

我想知道运行 PHP 时 EC2 CPU 性能的阈值是多少?

我们运营一个应用程序,希望优先考虑性能而不是成本,同时又不浪费金钱。

我应该设置哪些 CPU 百分比阈值:

  • 何时添加新实例
  • 何时删除多余的实例

如果有人有性能与 CPU 负载的图表,那将是令人惊叹的。

或者我应该使用与 CPU 完全不同的指标?

答案1

这个问题没有一个万能的答案。您需要对单个节点进行负载测试,并查看 CPU 使用率在什么情况下响应时间会发生显著变化。这可能是 90% 或 10%,具体取决于您的应用程序及其处理并发的方式。JMeter 是进行此类测试的便捷工具。

然后,您将把高档水平设置在比该水平低一些的位置。请记住,扩大规模需要一定的时间,因此您需要留出一些空间。

缩小规模稍微容易一些。查看平均节点的使用情况,并将目标设置为略低于该值,因此如果您的规模过大或流量下降,它就会缩小规模。通常,以更大的增量扩大规模比缩小规模更有利于提高性能。

您可以设置 CloudWatch 警报来监视集群大小是否达到给定值,其中“最大”值是主要候选值。如果集群已达到其极限,并且可能需要进行干预,它将唤醒您。

答案2

我有一些想法要告诉你。有些可以直接回答你的问题,有些则是其他需要考虑的事情。

首先,PHP 通常占用大量 CPU。根据 CPU 使用率进行扩展可能是明智的。您必须根据您的经验、负载测试或反复试验来确定阈值。您可能应该先保守一点,观察一段时间,然后进行调整,以在利用率与成本之间取得良好的平衡。

有关于扩展的通用指南。本指南建议按 80% 扩大规模,按 20% 缩小规模,而这亚马逊指南建议以 80% 的比例增加,以 40% 的比例减少。

缓存匿名内容可以大幅减少 CPU 使用率,具体取决于应用程序。如果 99% 的用户都是匿名用户,则只需生成一次页面即可为所有用户提供服务。为了进一步减少负载和成本,您可以使用 CloudFront 或 CloudFlare 等 CDN 来提供此静态内容。如果您使用 CDN,则需要正确设置缓存标头。

谨慎选择您的 EC2 实例类型。T2 实例具有可变的 CPU,一旦您用完信用,该实例将立即变慢。负载平衡器算法“最少连接”应该可以满足此要求,但如果 T2 给您带来问题,您可能需要考虑通用 M 实例。

您可以将多个自动扩展组与一个负载均衡器关联。例如,您可以在低 CPU 阈值下添加竞价型实例,这比扩展按需实例要早,但随后让另一个组添加按需实例。这在这个问题

我还想知道您是否可以在 ELB 中拥有一个 T2 实例,但如果负载增加,则使用 M 个实例进行扩展。我认为您可能可以,使用类似于上述技术的多个自动扩展组。不过,这可能不值得这么麻烦。

相关内容