【问题标题】:Task takes too much time pending on ECS任务在 ECS 上挂起的时间过长
【发布时间】:2022-08-20 09:19:53
【问题描述】:

几天来我一直遇到一个奇怪的问题。 我正在使用 ecs-agent 上的 ECS_ENABLE_SPOT_INSTANCE_DRAINING=true env var 实现 ECS 逻辑以在终止时(特别是在 Spot 中断通知上)耗尽实例。

该过程运行良好,当收到中断通知时,ECS 会耗尽实例并将容器移动到另一个实例,但问题是,如果实例之前从未启动过该映像,则启动时间太长(大约 3 分钟,当现场中断时间为 2 分钟时)导致可用性问题。如果图像之前在该实例中启动,则启动任务只需 20 秒!

您在使用 ECS 之前遇到过这个问题吗?

PD:图像大约有 500MB,对于图像来说有那么大吗??

  • 这是 Fargate 还是 EC2 支持的 ECS 集群?如果是 EC2,则尝试通过 ssh/ssm 连接到机器并尝试docker pull 映像。还要检查机器中的 ecs 日志是否有任何错误。
  • 减小图像大小可以改善加载时间,但仍然很奇怪,第一次在该实例上加载图像需要更多时间......

标签: amazon-web-services amazon-ec2 amazon-ecs spot-instances


【解决方案1】:

您可以使用一些策略:

  1. 通过优化 Dockerfile 来减小镜像的大小。从存储库中提取较小的图像会更快。
  2. 将大图像烘焙到集群中使用的 AMI 中。现在每台新的现货机器都会有图像。根据 Dockerfile 的创建方式,可以重用大量层,从而更快地提取图像。

    一旦图像被拉到机器上,图像就会被缓存,随后的拉取几乎是即时的。

【讨论】:

    猜你喜欢
    • 2019-10-15
    • 2015-04-02
    • 2021-09-02
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多