我目前已将自动缩放设置列出到缩放时的 CPU 使用情况。现在,有些情况下我们的服务器由于内存不足而停止服务,我应用自定义指标来使用 Perl 脚本获取实例上的这些数据。是否可以制定列出这些自定义指标的扩展策略?
最佳答案
是的!
只需在自定义指标上创建一个警报(例如内存警报
),然后调整自动缩放组以根据内存警报进行缩放。
您应该选择一个指标来触发扩展(CPU或内存) - 尝试同时扩展两者可能会导致一个警报较高而另一个警报较低的问题.
更新:
在 Auto Scaling 组上创建警报时,它仅使用一个警报,并且该警报使用所有实例的聚合指标。例如,它可能是平均 CPU 利用率。因此,如果一个实例为 50%,而另一个实例为 100%,则指标将为 75%。这样,就不会因为某个实例太忙而添加实例。
这可能会给您的内存指标带来问题,因为跨组聚合内存是没有意义的。如果一台机器的内存为零,但另一台机器有足够的内存,则不会添加更多实例。这很好,因为一台机器可以处理更多负载,但它并不能真正很好地衡量服务器的“繁忙程度”。
如果您遇到“服务器由于内存不足而停止服务”,您应该做的最好的事情是在负载均衡器上配置运行状况检查,以便它可以检测实例是否可以处理请求。如果实例上的 Auto Scaling 运行状况检查失败,它将停止向该服务器发送请求,直到运行状况检查成功。这是识别有问题的特定实例的正确方法,而不是尝试横向扩展。
无论如何,您应该调查您的内存问题,并确定它是否实际上与负载(正在处理多少请求)有关,或者是否是应用程序中的内存泄漏。
关于amazon-web-services - AWS-Auto Scaling 上的 AWS cloudwatch 自定义指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50940558/