从EC2群集实例迁移到AWS Fargate之后,我意识到部署需要花费更长的时间。在他们花1-2分钟之前,现在一些破烂需要5分钟。 This post声称,他们在Fargate上的部署甚至需要长达10分钟的时间。
有人知道一种加快速度的方法吗?我找不到有关此主题的任何文档。
答案 0 :(得分:5)
通过进一步的搜索,我发现了this Reddit thread。一个AWS员工写道:
关于供应和启动容器的时间是 使用Fargate时肯定更长。我们可能会减少 供应状态,但Fargate在 而不是您自己管理的主机上的ECS。当你自我管理 主机,它们已经启动并正在运行,甚至可能已经拥有 在本地下载并缓存docker镜像,因此ECS能够启动 容器很快。 Fargate并非如此。
因此缩小图像应该会有所帮助。但总的来说,我想我必须忍受它,并希望在AWS方面进行优化。
答案 1 :(得分:2)
根据我的经验,它们变慢的两个原因:
awsvpc网络模式将ENI附加到任务。当必须对Lambda执行此操作时,如果Lambda在VPC中运行,则众所周知会大大增加初始启动时间。
Docker映像的大小也会影响启动时间,因为通常需要将映像下载到任何隐藏的主机上才能启动任务。我已经使用200MB的小型容器和2.5GB的容器进行了一些基准测试。前者的启动确实更快。
您不能对awsvpc做太多事情,因为Fargate要求它。缩小该图像将是您的下一个最大影响。
答案 2 :(得分:2)
这是我在研究可使用ECS Fargate缩短部署时间的选项时发现的任务分解和可能的改进:
以下是归因于部署持续时间的幕后情况:
如果您的任务与负载均衡器相关联,则部署还需要通过运行状况检查,并且您需要考虑:
在测试过程中,我能够部署通常在4096分钟(4vCPU)不到4分钟的时间内使用1024 CPU(1vCPU)大约8分钟的应用程序
通常,您的任务通常需要更少的CPU,并且您不希望总是为过度分配CPU付出代价。因此,请使用过度分配的资源运行部署,然后在使用原始CPU分配之后立即运行另一个部署。
可能不是您要用于每个部署的解决方案,但可能是修补程序部署的解决方案。