Airflow 2.0问题:Airflow supervisor任务过多

3

我使用Docker Swarm和Celery Executor安装了Airflow 2.0。
1周后,airflow task supervisor导致celery工作进程的内存溢出(附有截图)。
是否有人遇到过类似的问题?有什么建议吗?

enter image description here


有一个 Apache Airflow 的 Slack 频道和电子邮件列表,你也可以在这些渠道中提问。 - griffin_cosgrove
我通过设置execute_tasks_new_python_interpreter = True解决了这个问题。 - Ganesh
发布一个答案并接受它,这样其他人就可以看到了。 - griffin_cosgrove
1个回答

1
在Airflow 2.0中,有两种创建子进程的方法。
  1. fork父进程(快速)
  2. 使用python subprocess生成新的python进程(较慢)
默认情况下,Airflow 2.0使用方法(1)。 fork父进程更快。另一方面,任务完成后子进程不会被杀死。子进程数量会不断增加,直到内存耗尽。
我通过设置execute_tasks_new_python_interpreter = True切换到subprocess方法(2)。在这里,每个python进程都被杀死,并且每次都创建新进程。这可能会比较慢,但内存得到有效利用。

你说“另一方面,子进程在任务完成后不会被杀死”。为什么子进程在成功后必须被杀死?成功时它的退出代码为0。父进程等待其完成,然后也退出。与子进程有什么区别? - Anton Bryzgalov

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