亚马逊AWS ECS任务延迟

6

我正在使用AWS ECS在批处理任务上运行任务。

有时候任务需要10秒钟进入待处理状态并转移到运行状态,有时候则需要5分钟才能从待处理状态开始运行。

有什么方法可以防止5分钟的延迟问题吗? 是否存在某些设置或“热身”程序?


1
运行任务不应该花费太长时间,当你更改图像时,必须进行拉取。如果图像太重,它会影响响应时间。你有检查过吗? - German
是的,我的图像大小不小,大约1GB,但大多数情况下启动需要10秒钟,有时我会遇到1.5-5分钟的延迟问题。这是同一图像运行之间的真正巨大差距。 - Aviv Noy
另一种可能性是在早于预期的时间安排任务,并在脚本中添加延迟,例如在PHP中使用 time_sleep_until - Zath
1个回答

1
由于您的任务开始在一个没有下载您基础镜像的容器实例上,所以出现了延迟。您可以采取以下几个措施来帮助解决这个问题:
  1. 通过同时启动与您集群中实例数量相同的 n 个任务来预加载您的实例。这将使您的镜像下载到每个容器实例上,从而大大提高后续任务的启动时间。
  2. 通过升级到具有更高吞吐量的大型实例来提高实例的网络吞吐量。您可以在 Amazon EC2 实例配置页面 上查看每种实例类型的详细信息。您需要权衡增加的成本和延迟。
  3. 缩小您的镜像大小。

3
我想要补充的另一件事是使用基础镜像。很可能这个1GB的镜像由大约500MB的基础操作系统和250MB的系统库组成,这些库对于你容器的所有版本都是通用的。你可以将它们预先制作成一个基础镜像,然后在所有容器中重复使用,这样每次部署任务时,你只需要下载那个版本中实际不同的 ~250MB 自定义代码。这可以大大加快任务启动速度。 - nathanpeck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接