问题描述
我们正在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
变量以减少通过dags
和store_serialized_dags
等设置来解析max_threads
目录的频率。同样,这对cpu使用率没有任何影响。
作为参考,其他节点在大多数情况下都以30-70%的cpu运行,在运行大型DAG的短时间内,峰值达到100%以上。没有节点在内存使用方面有任何问题,使用的内存在2 GB到4 GB之间。
我们计划在将来添加更多DAG,并且担心调度程序可能会成为当前设置的瓶颈。是否还有其他配置选项可用于减少cpu使用率以允许将来增加DAG数量?
根据Ines的回答进行编辑:
我在Monitoring
标签中看到了cpu使用率百分比,运行调度程序服务的节点显示为橙色:
另外,当我查看运行airflow scheduler
的Pod时,这是cpu使用率,几乎总是100%:
解决方法
请查看official documentation,它描述了CPU usage per node
指标。您能详细说明在哪里看到百分比值,因为文档中提到了核心时间使用率:
该图显示了所有运行中聚合的CPU核心的使用情况 节点中的豆荚,以核心时间使用率衡量。这不 包括用于Airflow UI的App Engine实例的CPU使用率 或Cloud SQL执行个体。高CPU使用率通常是造成这种情况的根本原因 工人荚驱逐。如果您发现使用率很高,请考虑扩展 您的Composer环境或更改DAG运行时间表。
在此期间,有一个持续的解决方法,值得尝试。您应按照以下步骤限制同步POD时的CPU使用率:
- 转到
environment configuration
页,然后单击view cluster workloads
- 点击
airflow-scheduler
,然后编辑 - 找到名称:
gcs-syncd
并添加:
resources:
limits:
cpu: some value (you can try with 300m)
requests:
cpu: 10m
然后单击save
(在底部)。
- 重复气流工人的程序。
- 我们还必须编辑工作负载
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环境可能在资源使用期间变得不稳定。