AWS Cloudwatch 显示每次 ECS 扩展时 CPU 利用率都非常低

Posted

技术标签:

【中文标题】AWS Cloudwatch 显示每次 ECS 扩展时 CPU 利用率都非常低【英文标题】:AWS Cloudwatch shows CPU Utilization very low each time ECS scaling 【发布时间】:2019-05-07 18:06:18 【问题描述】:

对于 ECS Fargate 服务每次缩进或缩进,Cloudwatch 会在图表上显示 CPU 使用率非常低(大约 2 -> 3%)(与内存相同),然后会逐渐增加,尽管在此之前,它相当高(警察:80% for scaling out, 40% for scaling in)。

我只是担心在扩展时是否有任何不可用时间段(或休息时间)?

【问题讨论】:

【参考方案1】:

我只是担心在扩展时是否有任何不可用的时间段(或休息时间)?

从技术上讲,在 Fargate 级别,只要您的服务集的最小任务数 >= 1,答案是否定的。

虽然说“不”的余地是,如果您的应用程序的 CPUUtilization 从 70% 飙升至 100%,则应用程序本身可能会在 Cloudwatch 能够触发警报之前变得无响应,进而触发服务横向扩展。


虽然在那之前,还是挺高的

请记住,缩放操作不是即时的。如果您将 Cloudwatch 指标用于 CPUUtilization,周期为 60 秒,阈值为 2,这意味着在触发自动缩放之前,您的任务必须在超过 2 分钟内达到 > 80% 的利用率。

除此之外,Fargate 的启动时间比 ECS 启动类型的启动时间慢,因为 AWS 必须在幕后做一些魔术——特别是下载映像并附加一个 ENI——以使其“无服务器”。

因此,如果您的应用程序的利用率超过 80%,您不会立即看到它自动缩放。这可能解释了您在 Cloudwatch 中看到的情况,利用率高到足以触发缩放,但在触发缩放之后下降到 2%。

【讨论】:

感谢您的回答。但我仍然不明白为什么它在缩放后下降太多。如果当前的比率是 80%,那么缩放后应该是 40% 左右(如果容器数量增加一倍),但 2% 很奇怪。你觉得怎么样? 如果不了解容器中运行的内容、用于自动缩放的完整 ECS 服务设置、任务级别的 CPU/内存限制、主机规格,很难说。您正在查看 CPUUtilization,它也可能因工作负载而异。很多活动部件。

以上是关于AWS Cloudwatch 显示每次 ECS 扩展时 CPU 利用率都非常低的主要内容,如果未能解决你的问题,请参考以下文章

用于 ECS 任务/容器的 Terraform AWS CloudWatch 日志组

配置 cloudwatch “空闲”警报

AWS Grafana/CloudWatch - 如何按 accountId 显示账单

如何忽略 Terraform 中的嵌套字段?

如何在 AWS ECS 服务中查看每晚自动缩放后的任务计数历史记录

AWS Cloudwatch 日志状态显示正在运行,但日志在 AWS 控制台中不可用