I have auto-scaling setup currently listed to the CPU usage on scaling in & out. Now there are scenarios that our servers got out of service due to out of memory, I applied custom metrics to get those data on the instance using the Perl scripts. Is it possible to have a scaling policy that listed to those custom metrics?
答案 0 :(得分:1)
是的!
只需在“自定义指标”上创建一个警报(例如Memory-Alarm
),然后根据内存警报调整Auto Scaling组以进行缩放。
您应该选择一个指标来触发扩展(CPU 或内存)-尝试同时进行扩展可能会导致一个警报高而另一个警报低的问题
更新:
在Auto Scaling组上创建警报时,它仅使用一个警报,并且该警报在所有实例中使用汇总指标。例如,它可能是平均CPU使用率。因此,如果一个实例为50%,另一个实例为100%,则指标将为75%。这样,它不会仅仅因为一个实例太忙而添加实例。
这可能会导致您的内存指标出现问题,因为在整个组中聚合内存是没有意义的。如果一台计算机的内存为零,而另一台计算机的内存为零,则不会添加更多实例。很好,因为一台机器可以处理更多的负载,但这实际上不是衡量服务器“繁忙”程度的好方法。
如果遇到“服务器由于内存不足而无法使用服务”,则最好的办法是在负载均衡器上配置运行状况检查,以便它可以检测实例是否可以处理请求。如果实例上的Auto Scaling运行状况检查失败,则它将停止向该服务器发送请求,直到运行状况检查成功为止。这是识别有问题的特定实例的正确方法,而不是尝试向外扩展。
无论如何,您应该调查内存问题,并确定它是否实际上与负载有关(正在处理多少个请求)还是应用程序中的内存泄漏。