Amazon ec2 AWS自动校准不工作/CPU利用率低于30%

Amazon ec2 AWS自动校准不工作/CPU利用率低于30%,amazon-ec2,amazon-web-services,load-balancing,jmeter,Amazon Ec2,Amazon Web Services,Load Balancing,Jmeter,我已按如下方式设置AWS自动缩放: 1) 创建负载平衡器并向其注册一个实例; 2) 在ELB中增加健康检查; 3) 增加2个警报: -CPU使用率->60%持续60秒,启动1个实例; -CPU使用率

我已按如下方式设置AWS自动缩放:

1) 创建负载平衡器并向其注册一个实例;
2) 在ELB中增加健康检查;
3) 增加2个警报:
-CPU使用率->60%持续60秒,启动1个实例;
-CPU使用率<40%,持续120秒,降速1个实例;
4) 编写了一个jMeter脚本,向相关网站发送流量:250个线程,200秒爬升时间,循环计数5

我看到的很奇怪

我预计CPU使用率会随着用户数量的增加而迅速上升。但是,CPU使用率保持在20-30%之间(这就是为什么新实例从不启动),运行中的实例在达到100个以上用户时就会抛出超时错误

我不明白为什么当网站实际超时时CPU使用率如此之低


想法?

这可能是ELB的问题。ELB的扩展速度不是很快,它需要到ELB的一致流量才能让亚马逊知道您需要更大的流量。如果你一下子就狠狠地打击它,这无助于它的扩展。因此,ELB可能在处理所有连接时遇到问题

这是SSL吗?你在ELB上做SSL吗?这也会给规模不足的ELB增加开销


我真诚地建议不要使用ELB。haproxy是一种更好的产品,在大多数情况下速度更快。如果需要,我可以详细说明,但看看亚马逊如何处理cname,以及你可以用haproxy做什么…

听起来你在测试自动缩放,以确保它能满足你的需要。作为第一步,看看As是否会启动一个新实例,试着将CPU启动检查减少到25%。我意识到这比您希望使用的“前进”要低得多,但这将有助于验证您的初始配置是否正常工作

作为第二步,您应该查看您的应用程序,看看CPU是否是作为扩展监视器的最佳指标。应用程序中的其他地方可能存在不一定与CPU相关的瓶颈(web服务器调优、内存、数据库、存储等)。你没有提到你正在提供什么类型的内容;它是静态的还是由解释器生成的(如PHP或其他)?您还可以将自己的自定义度量数据发送到CloudWatch,并使用此度量触发缩放

您可能还需要计算实例从冷启动到为流量提供服务所需的时间。如果时间超过60秒,您可能需要适当调整监控阈值时间(或设置冷却时间)。正如chantheman指出的,ELB也可能需要一些时间来注册实例(如果新实例位于不同的AZ中,则需要更长的时间)


我希望所有这些都能有所帮助。

我们发现,当您在t2实例上使用自动缩放时,在负载较重的情况下,这些实例将耗尽CPU点数,然后限制为CPU的20%(从监控角度来看,内部htop仍然是100%)。在内部,它们处于最大负载

这会将错误的度量发送到自动缩放,并且不会触发新闻实例


您需要更改度量或开发您自己的或移动到m实例

您能否详细说明如何将haproxy用于EC2实例?我所有关于AWS自动缩放的阅读都是基于ELB的…不,这不是SSL,但我想在将来添加SSL?好吧,请查看haproxy页面。这是一个非常棒的节目。您可以使用cloudwatch在haproxy服务器后面的应用程序服务器上设置警报,并像使用ELB一样自动缩放。设置类似于,前面的haproxy使用apache或nginx或其他东西,直接向用户提供静态内容,将php内容发送到haproxy服务器后面的应用程序服务器,将内容路由到数据库服务器或memcache服务器或其他服务器。关键是您仍然可以使用自动缩放,因为它所做的只是监视给定服务器上的CPU并启动一个新的AMI。您必须以某种方式将IP添加到haproxy配置文件中。。。我想你也可以编写脚本,但那更复杂。。。。。