部署到ECS需要很多时间

问题描述 投票:0回答:1

我在 AWS Elastic Container Service 上有几个 next.js 应用程序。

我使用 CodePipeline 来自动化 CI/CD 过程(来源是 Github,构建步骤是 CodeBuild)。除了“部署”步骤花费太多时间(大约 10 分钟)之外,一切都运行良好。我在 AWS ECR 上托管 docker 映像。

我已经尝试过的:

  1. 我尝试增加任务数量。
  2. 我尝试了更强的 EC2 实例。
  3. 我尝试更改目标组的注销延迟 从 300 秒到 5 秒。
  4. 我尝试改变健康阈值 目标组从 5 到 2。间隔也为 5 秒。

您知道是什么原因造成的吗?我通常使用 Heroku,但不幸的是我需要托管一个套接字 web-api,并且我需要它位于同一台机器上以获得更好的性能。

以下是一些日志: enter image description here 谢谢!

amazon-web-services amazon-ecs amazon-ecr
1个回答
0
投票

加速 Amazon ECS 容器部署 是改善 ECS 部署时间的不错指南。

有几种方法可以改善这一点,其中一些您已经尝试过:

  1. 将注销延迟减少到5秒,以便旧任务更快注销;
  2. 将健康检查间隔减少到5秒,健康检查计数减少到2,以便新任务更快地标记为健康;
  3. 将任务停止超时减少到 2 秒,以便旧任务更快停止;
  4. 将健康检查宽限期延长到足以让您的服务启动,以便新任务在完成启动之前不会被标记为不健康;
  5. 提高服务启动时间,使新任务更快地通过健康检查;
  6. 使用基于 EC2 的任务而不是基于 Fargate 的任务,并在 EC2 上缓存容器,以减少下载镜像所需的时间。

从您的日志来看,您可能会从上面的 4) 和 5) 中受益:似乎新任务正在启动,但在大约 1 分钟后被标记为不健康并停止/取消注册。 1 分钟是默认 Fargate

healthCheckGracePeriod
。 (不确定基于 EC2 的服务是什么。)

要查看这是否确实是您的问题,您可以查看 AWS 上的 ECS 控制台中的服务部署,并查看“失败计数”:

ECS console - Deployment failure detection and rollback

如果您的任务在启动时失败,您可能会在此处看到一些非零数字。

© www.soinside.com 2019 - 2024. All rights reserved.