【发布时间】:2026-02-11 06:05:02
【问题描述】:
我的 AWS 账户中有一个 MWAA Airflow 环境。我正在设置的 DAG 应该从 S3 存储桶 A 读取大量数据,过滤我想要的内容并将过滤后的结果转储到 S3 存储桶 B。它需要每分钟读取一次,因为数据每分钟都在进来。每次运行处理大约 200MB 的 json 数据。
我的初始设置是使用 env class mw1.small 和 10 台工作机器,如果我在这个设置中只运行一次任务,每次运行大约需要 8 分钟才能完成,但是当我开始计划每分钟运行一次时,他们中的大多数无法完成,开始需要更长的时间来运行(大约 18 分钟)并显示错误消息:
[2021-09-25 20:33:16,472] {{local_task_job.py:102}} INFO - Task exited with return code Negsignal.SIGKILL
我尝试将 env 类扩展到 mw1.large 有 15 个工作人员,在错误出现之前能够完成更多工作,但仍然无法赶上每分钟摄取的速度。 Negsignal.SIGKILL 错误仍然会在达到工作机器最大值之前显示。
此时,我应该怎么做才能扩大规模?我可以想象打开另一个 Airflow 环境,但这没有任何意义。必须有一种方法可以在一个环境中做到这一点。
【问题讨论】:
-
SIGKILL 表示内存不足。不确定该信息是否有用。
-
@jordanm 嗯,有道理,但在这种情况下,我怎样才能增加内存?我已经在使用 mw1.large,这是 MWAA 提供的最大机器。
-
是的,您已达到 MWAA 的极限。您可以尝试将您的工作分成更小的块,否则您可以通过自我管理而不是 MWAA 来获得更多带有气流的 RAM。 AWS 胶水也可能适合您的用例。
-
也可能值得检查
local_task_job.py本身,看看有什么方法可以减少内存使用。 (200M 看起来还不错,但取决于你在里面做什么,它可能非常大)你在这个脚本中使用什么框架? -
你好@Emma,我只是在运行 Python 并使用 Boto3 处理 S3 存储桶的东西,不过我刚刚找到了解决方案。谢谢!
标签: amazon-web-services scaling airflow mwaa