AWS Auto Scaling 上的 AWS cloudwatch 自定义指标
AWS cloudwatch custom metrics on AWS-Auto Scaling
我有自动缩放设置,目前列出了 CPU 用于扩展和缩小的用法。现在有我们的服务器由于内存不足而停止服务的情况,我应用自定义指标来使用 Perl 脚本在实例上获取这些数据。是否有可能列出这些自定义指标的扩展策略?
是的!
只需在自定义指标上创建一个警报(例如 Memory-Alarm
),然后调整 Auto Scaling 组以根据内存警报进行缩放。
您应该选择 一个指标 来触发缩放(CPU 或 内存)——尝试同时使用两者进行缩放可能会导致一个警报高而另一个警报低的问题。
更新:
在 Auto Scaling 组上创建警报时,它仅使用 一个警报 并且该警报使用 所有实例的聚合指标 .例如,它可能是 平均 CPU 利用率 。因此,如果一个实例为 50% 而另一个实例为 100%,则指标将为 75%。这样,它就不会因为一个实例太忙而添加实例。
这可能会导致您的内存指标出现问题,因为跨组聚合内存没有意义。如果一台机器内存为零而另一台机器内存充足,则不会添加更多实例。这很好,因为一台机器可以处理更多负载,但它并不能很好地衡量 'how busy' 服务器。
如果您遇到 "servers got out of service due to out of memory",您应该做的最好的事情是在负载均衡器上配置健康检查,以便它可以检测实例是否可以处理请求。如果 Auto Scaling 健康检查在一个实例上失败,那么它将停止向该服务器发送请求,直到健康检查成功。这是识别有问题的特定实例的正确方法,而不是尝试横向扩展。
无论如何,您应该调查您的内存问题并确定它是否真的与负载有关(正在处理多少请求)或者它是否是应用程序中的内存泄漏。
我有自动缩放设置,目前列出了 CPU 用于扩展和缩小的用法。现在有我们的服务器由于内存不足而停止服务的情况,我应用自定义指标来使用 Perl 脚本在实例上获取这些数据。是否有可能列出这些自定义指标的扩展策略?
是的!
只需在自定义指标上创建一个警报(例如 Memory-Alarm
),然后调整 Auto Scaling 组以根据内存警报进行缩放。
您应该选择 一个指标 来触发缩放(CPU 或 内存)——尝试同时使用两者进行缩放可能会导致一个警报高而另一个警报低的问题。
更新:
在 Auto Scaling 组上创建警报时,它仅使用 一个警报 并且该警报使用 所有实例的聚合指标 .例如,它可能是 平均 CPU 利用率 。因此,如果一个实例为 50% 而另一个实例为 100%,则指标将为 75%。这样,它就不会因为一个实例太忙而添加实例。
这可能会导致您的内存指标出现问题,因为跨组聚合内存没有意义。如果一台机器内存为零而另一台机器内存充足,则不会添加更多实例。这很好,因为一台机器可以处理更多负载,但它并不能很好地衡量 'how busy' 服务器。
如果您遇到 "servers got out of service due to out of memory",您应该做的最好的事情是在负载均衡器上配置健康检查,以便它可以检测实例是否可以处理请求。如果 Auto Scaling 健康检查在一个实例上失败,那么它将停止向该服务器发送请求,直到健康检查成功。这是识别有问题的特定实例的正确方法,而不是尝试横向扩展。
无论如何,您应该调查您的内存问题并确定它是否真的与负载有关(正在处理多少请求)或者它是否是应用程序中的内存泄漏。