首页 > 解决方案 > 调度程序节点始终高于 100% 利用率

问题描述

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

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

作为参考,其他节点大部分时间都以 30-70% 的 CPU 运行,当大型 DAG 运行时,会在短时间内飙升至 100% 以上。没有节点在内存使用方面存在任何问题,使用了 2 GB 到 4 GB 之间。

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

针对 Ines 的回答进行编辑:我在Monitoring选项卡中将 CPU 使用率视为百分比,运行调度程序服务的节点显示为橙色: 在此处输入图像描述 此外,当我查看运行的 pod 时,airflow scheduler这是 CPU 使用率,几乎总是100%: 在此处输入图像描述

标签: airflow-schedulergoogle-cloud-composer

解决方案


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

显示节点中所有正在运行的 Pod 的 CPU 内核使用率的图表,以内核时间使用率来衡量。这不包括用于 Airflow UI 或 Cloud SQL 实例的 App Engine 实例的 CPU 使用率。高 CPU 使用率通常是 Worker Pod 驱逐的根本原因。如果您发现使用率非常高,请考虑扩展 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。例如,如果您想删除 May 的所有日志,请使用以下命令:

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

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


推荐阅读