Airflow webserver配置正确插件路径后导致Ubuntu系统崩溃
Airflow配置正确plugins路径后系统资源占满崩溃解决方案
核心原因
该问题是Airflow 1.10.12版本的插件加载逻辑和当前配置冲突导致的:
- 手动将plugins目录路径加入了
PYTHONPATH,而Airflow本身会自动将plugins_folder路径加入Python导入路径,重复的路径配置会触发插件扫描时的循环导入、递归扫描问题 - Airflow 1.10.12本身不兼容Python 3.8,存在官方未修复的内存泄漏、扫描死循环bug
/home/helia/airflow/utils目录下的代码不符合Airflow插件规范,触发扫描时的资源耗尽问题
解决方案
- 移除
PYTHONPATH中重复的utils路径
修改当前用户的shell配置文件(.bashrc/.zshrc等),将PYTHONPATH修改为仅保留/home/helia/airflow,修改完成后执行source ~/.bashrc生效,执行echo $PYTHONPATH确认配置正确。Airflow会自动处理plugins目录的导入路径,不需要手动添加。 - 规范plugins目录使用
Airflow的plugins_folder要求存放符合官方插件规范的代码,不能直接存放普通工具函数文件。如果不需要用到自定义插件功能,直接将plugins_folder修改为专用的空目录,例如/home/helia/airflow/plugins,需要用到的工具函数可以直接放在dags目录下,在DAG代码中通过相对导入引用即可。
如果需要保留utils作为plugins目录,先清空目录下所有文件,测试webserver是否可以正常启动,再逐个移入文件排查存在循环导入、无限逻辑的问题代码。 - 降低扫描频率
修改airflow.cfg配置参数,降低扫描频率减少资源占用:dag_dir_list_interval = 300 - 修复版本兼容问题
Airflow 1.10.12官方支持的最高Python版本为3.7,当前使用Python 3.8存在兼容问题。可以选择将Python版本降级到3.7,或是将Airflow升级到2.x稳定版本解决兼容问题。
内容的提问来源于stack exchange,提问作者Paniz Asghari
相关产品推荐
相关产品推荐

