根据服务使用文档在 ECS 任务中使用软限制时,内存利用率可能会超过 100%(因为您不想用硬限制终止您的应用程序)。对于 CPU 利用率,这始终是正确的。例如,我们有一个微服务,其软限制为 500MB,并且该任务的两个实例报告内存使用率为 124%。启动第三个实例会使使用率降至 103%。
Docker 统计数据证实了这些数据:
CONTAINER CPU % MEM USAGE / LIMIT MEM %
6f5cd837b3d7 0.64% 670.1 MiB / 3.862 GiB 16.94%
817c573afac7 9.66% 590.3 MiB / 3.862 GiB 14.93%
7a50d1be6e6e 20.34% 427.1 MiB / 3.862 GiB 10.80%
但是,这确实使得自动扩展变得非常困难。例如,CPU 利用率为 400% 可能意味着有足够的 CPU 可用,我不需要新实例,而 CPU 利用率为 100% 可能意味着所有任务都在使用其保留的 CPU 单元,我可能需要新实例(新的 EC2 实例或新的任务实例)。
这有意义吗?当仅使用软限制时,ECS 上基于 CPU 和内存指标进行自动扩展的逻辑规则是什么?