Amazon ec2 什么';对于亚马逊Web服务上极短的流量峰值,正确的Cloudwatch/自动缩放设置是什么?

Amazon ec2 什么';对于亚马逊Web服务上极短的流量峰值,正确的Cloudwatch/自动缩放设置是什么?,amazon-ec2,amazon-web-services,amazon-elastic-beanstalk,autoscaling,amazon-cloudwatch,Amazon Ec2,Amazon Web Services,Amazon Elastic Beanstalk,Autoscaling,Amazon Cloudwatch,我有一个在amazon elastic beanstalk上运行的站点,其流量模式如下: 通常约50个并发用户 在Facebook页面上发布帖子时,约2000名并发用户持续1/2分钟 Amazon web服务声称能够快速扩展以应对这样的挑战,但cloudwatch的“大于x超过1分钟”设置似乎对这种流量模式不够快 通常在几秒钟内,所有ec2实例都会崩溃,杀死所有cloudwatch指标,整个站点会关闭4/6分钟。到目前为止,我还没有找到一个适合这个senario的配置 以下是一个较小事件的图

我有一个在amazon elastic beanstalk上运行的站点,其流量模式如下:

  • 通常约50个并发用户
  • 在Facebook页面上发布帖子时,约2000名并发用户持续1/2分钟
Amazon web服务声称能够快速扩展以应对这样的挑战,但cloudwatch的“大于x超过1分钟”设置似乎对这种流量模式不够快

通常在几秒钟内,所有ec2实例都会崩溃,杀死所有cloudwatch指标,整个站点会关闭4/6分钟。到目前为止,我还没有找到一个适合这个senario的配置

以下是一个较小事件的图表,该事件也导致了该站点的死亡:

这些链接的发布是否可以预测?如果是这样,您可以使用或作为替代,您可以更改自动缩放组的所需容量值,甚至在发布链接之前触发执行策略以直接向外缩放

您知道在一个组中可以有多个扩展策略吗?因此,对于您的案例,您可能有特殊的自动缩放策略,例如
SCALE\u OUT\u HIGH
,它可以一次添加10个以上的实例。请看一下
as put scaling policy
命令

此外,您需要检查代码并找到瓶颈


您使用什么HTTPD?考虑切换到NGNX,因为它比APACHE更快捷和更少消耗资源的软件。尝试使用Memcache。。。NoSQL-like Redis用于高速读写也是不错的选择。

AWS的建议如下:

我们一直在努力使我们的系统更具响应性,但事实确实如此 使用响应自动调配虚拟服务器具有挑战性 几秒钟的时间,如您的用例所需。也许 有一种变通方法,可以更快地做出响应,或者更简单 当请求开始增加时具有弹性

你有没有观察到如果你使用更大的 实例类型或稳定状态下的更多实例? 这可能是一种应对入境旅客快速增长的方法 请求。虽然我承认这可能不是最划算的, 您可能会发现这是一个快速解决方案

另一种方法可能是调整您的报警以使用阈值或阈值 能够更快地反映(或预测)需求增长的指标。 例如,如果将闹钟设置为,您可能会看到更好的性能 超过75或100个用户后添加实例。你可能已经是了 这样做。除此之外,您的用例可能还有另一个指示器 这预示着需求会增加,例如在你的网站上发布帖子 Facebook页面可能会在请求大幅增加几次之前 几秒钟甚至一分钟。使用CloudWatch自定义度量来监视 该值,然后将报警设置为自动缩放也可能是错误的 潜在的解决方案


因此,我认为最好的答案是以较低的流量运行更多的实例,并使用自定义度量来预测来自外部源的流量。例如,我将尝试监控Facebook和Twitter上有链接到该网站的帖子,并立即进行放大。

该图显示了一个连续200名用户的围攻测试,持续2分钟。这是一个典型的长度,但大约是发布链接时流量的20%。如果你进行扩展,将收取整整一个小时的费用,即使可以快速扩展(使用现成的ami),在十分钟后卷起一堆按需服务器将其丢弃也是一个昂贵的操作