调度程序节点始终高于100%利用率

问题描述

我们正在5个节点上运行Cloud Composer,n1-standard-2集群运行composer-1.11.3-airflow-1.10.9。启用专用IP。选择了Python 3。当前,我们大约有30个DAG,其中一些包含100多个任务。大多数DAG每天运行一次。

运行airflow scheduler工作负载的节点始终以大约150%的cpu利用率运行,而不管正在运行的任务数量如何。降低cpu使用率的唯一方法删除DAG,直到只剩下5或6个(显然不是一种选择)。我们尝试过的:

  • 我们遵循了Medium article,详细说明了如何在专用节点上运行调度程序服务,但是我们找不到降低cpu使用率的配置。我们已经尝试过在100 GB SSD上运行与e2-highcpu-32一样强大的节点。使用率保持在150%。
  • 我们尝试更新airflow.cfg变量以减少通过dagsstore_serialized_dags等设置来解析max_threads目录的频率。同样,这对cpu使用率没有任何影响。

作为参考,其他节点在大多数情况下都以30-70%的cpu运行,在运行大型DAG的短时间内,峰值达到100%以上。没有节点在内存使用方面有任何问题,使用的内存在2 GB到4 GB之间。

我们计划在将来添加更多DAG,并且担心调度程序可能会成为当前设置的瓶颈。是否还有其他配置选项可用于减少cpu使用率以允许将来增加DAG数量

根据Ines的回答进行编辑: 我在Monitoring标签中看到了cpu使用率百分比,运行调度程序服务的节点显示为橙色:

enter image description here

另外,当我查看运行airflow scheduler的Pod时,这是cpu使用率,几乎总是100%:

enter image description here

解决方法

请查看official documentation,它描述了CPU usage per node指标。您能详细说明在哪里看到百分比值,因为文档中提到了核心时间使用率:

该图显示了所有运行中聚合的CPU核心的使用情况 节点中的豆荚,以核心时间使用率衡量。这不 包括用于Airflow UI的App Engine实例的CPU使用率 或Cloud SQL执行个体。高CPU使用率通常是造成这种情况的根本原因 工人荚驱逐。如果您发现使用率很高,请考虑扩展 您的Composer环境或更改DAG运行时间表。

在此期间,有一个持续的解决方法,值得尝试。您应按照以下步骤限制同步POD时的CPU使用率:

  1. 转到environment configuration页,然后单击view cluster workloads
  2. 点击airflow-scheduler,然后编辑
  3. 找到名称:gcs-syncd并添加:
resources:
  limits:
    cpu: some value (you can try with 300m)
  requests:
    cpu: 10m

然后单击save(在底部)。

  1. 重复气流工人的程序。
  2. 我们还必须编辑工作负载airflow-scheduler的气流计划程序部分。单击编辑YAML文件,然后为airflow-scheduler部分添加:
resources:
  limits:
    cpu: 750m
  requests:
    cpu: 300m

如果您可以尝试上述步骤并查看它是否可以改善性能,那将是很好的选择。

有时存储区的/logs可能包含许多文件,这些文件会导致gcs-syncd在进行日志的内部同步时大量使用CPU。您可以尝试删除存储桶gs://<composer-env-name>/logs中一些最旧的日志。例如,如果要删除所有5月的日志,请使用以下命令:

gsutil -m rm -r gs://europe-west1-td2-composter-a438b8eb-bucket/logs/*/*/2020-05*

理想情况下,GCE实例不应始终运行超过70%的CPU,否则Composer环境可能在资源使用期间变得不稳定。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...