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 日志组
AWS Grafana/CloudWatch - 如何按 accountId 显示账单