gpt4 book ai didi

amazon-web-services - Amazon MWAA Airflow - 任务容器在没有日志的情况下关闭/停止/终止

转载 作者:行者123 更新时间:2023-12-04 14:07:28 30 4
gpt4 key购买 nike

我们使用 Amazon MWAA Airflow,很少有一些任务被标记为“失败”,但根本没有日志。就好像容器在没有注意到我们的情况下被关闭了一样。
我找到了这个链接:
https://cloud.google.com/composer/docs/how-to/using/troubleshooting-dags#task_fails_without_emitting_logs
这由机器上的OOM解释。但是我们的任务几乎不使用 CPU 和 RAM。他们只对 AWS API 进行 1 次 HTTP 调用。所以很轻。
在 Cloudwatch 上,我可以看到没有其他任务在同一个容器上启动(DAG 运行通过打印容器 IP 开始,因此我可以在所有任务上搜索此 IP)。
如果有人有想法,那就太好了,谢谢!

最佳答案

MWAA 使用 ECS 作为后端,事情的工作方式是 ECS 将根据集群中运行的任务数量自动调整工作线程的数量。对于小环境,默认每个worker可以处理5个任务。如果有超过 5 个任务,那么它将扩展另一个 worker ,依此类推。
我们不对 Airflow 进行任何计算(批处理、长时间运行的作业),我们的 Dag 主要是对其他服务的 API 请求,这意味着我们的 Dag 运行速度快且生命周期短。有时,我们可以在很短的时间(几秒钟)内完成八个或更多任务。在这种情况下,自动缩放将触发向外扩展并向集群添加一个或多个工作器。然后,由于这些任务只是 API 请求,所以它很快就会被执行,任务数量 下降到 0 触发规模(删除 worker )。如果在那个确切的时刻安排了另一个任务,那么 Airflow 最终将在正在移除的容器上运行该任务,并且您的任务将在中间被杀死而没有任何通知(竞争条件)。发生这种情况时,您通常会看到不完整的日志。
第一个解决方法是通过卡住集群中的工作人员数量来禁用自动缩放。您可以将 min 和 max 设置为适当的工作人员数量,这取决于您的工作量。我们同意,我们失去了服务的弹性。

$ aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --max-workers 2
AWS 建议的另一个解决方案是始终运行一个虚拟任务(无限循环),这样您就永远不会扩展所有工作人员。
AWS 告诉我们,他们正在研究改进执行程序的解决方案。

关于amazon-web-services - Amazon MWAA Airflow - 任务容器在没有日志的情况下关闭/停止/终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67332106/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com