气流工作器-热关闭



我使用cloud composer-1.17.6-airflow-2.0.2管理气流集群。集群相当小(4个worker pod, 1个scheduler pod),并且启用了自动伸缩。

然而,我遇到气流工人重启非常频繁,即使只有几个工作正在运行。

这是我在使用kubectl日志重新启动worker pods之前看到的消息——previous

worker: Warm shutdown (MainProcess)

知道是什么引起的吗?我尝试将celery acks_late设置为True,将celery worker_max_tasks_per_child设置为500,但是,问题仍然存在。

提前谢谢你。

正如我在评论中提到的,Warm shutdown消息通常表明resource-intensive DAGs在工人内部运行,exhaust可以是集群的resources like CPU or memory和kubernetes的evicting the pods,或者是DAG代码和编写器环境中的tasks failing due to errors重新启动pod。

您需要检查您的airflow-workerpod,看看他们是否不断被驱逐或没有。查看:

  1. 打开Kubernetes引擎,然后点击workload
  2. 按集群名称进行筛选(可以从Composer环境页面获得)。语法:集群:my-composer-cluster-name
  3. 单击工作负载,例如airflow-worker
  4. 查找没有绿色复选标记或被列为"被驱逐"的pod
  5. 在任何GKE节点中的

High memory pressure将在尝试to relieve that pressure.时从节点中引导Kubernetes scheduler to evict pods有一个liveness prober,检查工人是否能够持续完成他们的任务,因为它看到它有scheduled tasks,但没有取得任何进展,它kills and restarts工人(热关闭)试图让它到一个健康的状态。
虽然许多不同的气流组件在GKE中运行,但大多数组件并不倾向于使用太多内存,因此最常见的情况是我们上传资源密集型DAG。气流工人运行这些dag,耗尽资源,然后被驱逐。

您还可以查看是否存在more than 1 worker running on the same pod.同样,这通常发生在由于资源压力,工人可以在同一节点上共同定位时。

在这种情况下你可以做三件事:

  • 从当前机器类型手动升级。

  • 使用更大的机器类型(更大的内存)创建一个新的Composer环境。

  • 您尝试查看您的dag,看看它们是否包含资源密集型,高内存使用的任务。DAG文件不应该用于资源密集型任务,它们应该仅用于编排。

我建议您将dag移出编写器环境,并查看worker是否停止不断重新启动。如果它们停止重新启动,请逐个添加dag,并监视pods是否重新启动,然后确定是哪一个导致了问题。

对于遇到这个问题的人,我在几个月前通过重构动态DAG解决了这个问题。这发生在DAG解析期间,它循环发生,我有几个逻辑需要构造DAG,基本上执行后端调用(调用BigQuery API,调用Xcom后端等)。

作为实践,重操作(如外部调用)时应避免构建DAG逻辑。

我重构了逻辑并删除了这些逻辑,dag解析从在150秒内解析150 dag到在3秒内解析150 dag呈指数级提高。从那以后再也没有重新启动过。

相关内容

  • 没有找到相关文章

最新更新