Probleme mit Airflow-Planern beheben

Auf dieser Seite finden Sie Schritte zur Fehlerbehebung und Informationen zu häufigen Problemen mit dem Airflow-Planer.

Ursache des Problems ermitteln

Ermitteln Sie zuerst, ob das Problem beim DAG-Parsing auftritt oder ob Aufgaben während der Ausführung verarbeitet werden. Weitere Informationen zur Parsing- und Ausführungszeit finden Sie unter Unterschied zwischen der DAG-Parsing-Zeit und der DAG-Ausführungszeit.

DAG-Parsing-Zeiten überprüfen

So prüfen Sie, ob das Problem beim DAG-Parsing auftritt:

Console

  1. Rufen Sie in der Cloud Console die Seite Umgebungen auf.

    Zur Seite "Umgebungen"

  2. Wählen Sie Ihre Umgebung aus der Liste aus.
  3. Prüfen Sie auf dem Tab Monitoring im Abschnitt DAG-Ausführungen das Diagramm Parsing-Zeit für alle DAG-Dateien insgesamt und mögliche Probleme.

    Im Abschnitt "DAG-Ausführungen" auf dem Tab "Composer-Monitoring" werden die Systemdiagnosemesswerte für die DAGs in Ihrer Umgebung angezeigt.

gcloud

Verwenden Sie den Befehl list_dags mit dem Flag -r, um die Parsing-Zeit für alle DAGs aufzurufen.

gcloud composer environments run ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  list_dags -- -r

Dabei gilt:

  • ENVIRONMENT_NAME: der Name Ihrer Umgebung
  • ENVIRONMENT_LOCATION: Region Ihrer Umgebung

Die Ausgabe sieht dann ungefähr so aus:

-------------------------------------------------------------------
DagBag loading stats for /home/airflow/gcs/dags
-------------------------------------------------------------------
Number of DAGs: 5
Total task number: 13
DagBag parsing time: 0.6765180000000001
-----------+----------+---------+----------+-----------------------
file       | duration | dag_num | task_num | dags
-----------+----------+---------+----------+-----------------------
/dag_1.py  | 0.6477   |       1 |        2 | ['dag_1']
/dag_2.py  | 0.018652 |       1 |        2 | ['dag_2']
/dag_3.py  | 0.004024 |       1 |        6 | ['dag_3']
/dag_4.py  | 0.003476 |       1 |        2 | ['dag_4']
/dag_5.py  | 0.002666 |       1 |        1 | ['dag_5']
-----------+----------+---------+----------+-----------------------

Suchen Sie nach dem Wert DAGBag-Parsing-Zeit. Ein großer Wert kann darauf hinweisen, dass einer Ihrer DAGs nicht optimal implementiert wurde. In der Ausgabetabelle sehen Sie, welche DAGs eine lange Parsing-Zeit haben.

Laufende Aufgaben und Aufgaben in der Warteschlange überwachen

So prüfen Sie, ob Aufgaben in einer Warteschlange hängen:

  1. Rufen Sie in der Cloud Console die Seite Umgebungen auf.

    Zur Seite "Umgebungen"

  2. Wählen Sie das Projekt aus der Liste aus.
  3. Sehen Sie sich auf dem Tab Monitoring das Diagramm Aktive Aufgaben und Aufgaben in der Warteschlange im Abschnitt DAG-Ausführungen an und identifizieren Sie mögliche Probleme.

Fehlerbehebung zum Zeitpunkt der DAG-Analyse

In den folgenden Abschnitten werden Symptome und potenzielle Lösungen für einige häufige Probleme bei der DAG-Parsing-Zeit beschrieben.

Begrenzte Anzahl von Threads

Wenn Sie dem DAG-Prozessormanager (dem Teil des Planers, der DAG-Dateien verarbeitet) Zugriff auf eine begrenzte Anzahl von Threads gewähren, kann sich dies auf Ihre DAG-Parsing-Zeit auswirken. Wenden Sie die folgenden Änderungen auf die Konfigurationsdatei "airflow.cfg" an, um das Problem zu beheben:

  • Verwenden Sie für Airflow 1.10.12 und frühere Versionen den Parameter max_threads:

    [scheduler]
    max_threads = <NUMBER_OF_CORES_IN_MACHINE - 1>
    
  • Verwenden Sie für Airflow 1.10.14 und höher den Parameter parsing_processes:

    [scheduler]
    parsing_processes = <NUMBER_OF_CORES_IN_MACHINE - 1>
    

Ersetzen Sie NUMBER_OF_CORES_IN_MACHINE durch die Anzahl der Kerne in den Worker-Knoten-Maschinen.

Anzahl und Uhrzeit der Aufgabenverteilung

Airflow ist bekannt für Probleme bei der Planung einer großen Anzahl kleiner Aufgaben. In solchen Situationen sollten Sie eine kleinere Anzahl von konsolidierten Aufgaben verwenden.

Die Möglichkeit, viele DAGs oder Aufgaben gleichzeitig zu planen, kann ebenfalls eine mögliche Ursache sein. Um dieses Problem zu vermeiden, verteilen Sie die Aufgaben gleichmäßiger auf die einzelnen Nutzer.

Fehlerbehebung bei laufenden und in der Warteschlange befindlichen Aufgaben

In den folgenden Abschnitten werden Symptome und mögliche Lösungen für häufige Probleme bei laufenden und in die Warteschlange gestellten Aufgaben beschrieben.

Aufgabenwarteschlangen sind zu lang

In einigen Fällen kann eine Aufgabenwarteschlange zu lang für den Planer sein. Weitere Informationen zum Optimieren von Worker- und Sellerie-Parametern finden Sie unter Cloud Composer-Umgebung zusammen mit Ihrem Unternehmen skalieren.

Begrenzte Clusterressourcen

Möglicherweise treten Leistungsprobleme auf, wenn der GKE-Cluster Ihrer Umgebung zu klein ist, um alle DAGs und Aufgaben zu verarbeiten. Versuchen Sie in diesem Fall eine der folgenden Lösungen:

  • Erstellen Sie eine neue Umgebung mit einem Maschinentyp, der mehr Leistung bietet, und migrieren Sie Ihre DAGs dorthin.
  • Weitere Cloud Composer-Umgebungen erstellen und die DAGs auf diese aufteilen.
  • Ändern Sie den Maschinentyp für GKE-Knoten, wie unter Maschinentyp für GKE-Knoten aktualisieren beschrieben. Da diese Vorgehensweise fehleranfällig ist, wird sie nicht empfohlen.
  • Führen Sie ein Upgrade des Maschinentyps der Cloud SQL-Instanz durch, auf der die Airflow-Datenbank ausgeführt wird, z. B. mit den gcloud composer environments update-Befehlen. Eine geringe Leistung der Airflow-Datenbank kann der Grund dafür sein, dass der Planer langsam ist.

Zeitplanung während Wartungsfenstern vermeiden

Sie können bestimmte Wartungsfenster für Ihre Umgebung definieren. In dieser Zeit finden Wartungsereignisse für Cloud SQL und GKE statt.

Vermeiden Sie die Planung von DAG-Ausführungen während Wartungsfenstern, da dies zu Planungs- oder Ausführungsproblemen führen kann.

Überflüssige Dateien im Airflow-Planer ignorieren

Sie können die Leistung des Airflow-Planers verbessern, wenn Sie nicht benötigte Dateien im DAG-Ordner überspringen. Der Airflow-Planer ignoriert Dateien und Ordner, die in der Datei .airflowignore angegeben sind.

Damit der Airflow-Planer unnötige Dateien ignoriert:

  1. Erstellen Sie eine .airflowignore-Datei.
  2. Listen Sie in dieser Datei Dateien und Ordner auf, die ignoriert werden sollen.
  3. Laden Sie diese Datei in den Ordner /dags im Bucket Ihrer Umgebung hoch.

Weitere Informationen zum Dateiformat .airflowignore finden Sie in der Airflow-Dokumentation.

Airflow-Planer verarbeitet pausierte DAGs

Airflow-Nutzer pausieren DAGs, um ihre Ausführung zu vermeiden. Dadurch werden die Verarbeitungszyklen der Airflow-Worker gespeichert.

Der Airflow-Planer parst weiterhin pausierte DAGs. Wenn Sie die Airflow-schduler-Leistung wirklich verbessern möchten, können Sie .airflowignore verwenden oder pausierte DAGs aus dem DAGs-Ordner löschen.

Verwendung von waitwait_for_downstream“ in Ihren DAGs

Wenn Sie den Parameter wait_for_downstream in Ihren DAGs auf True setzen, muss eine Aufgabe erfolgreich sein, damit alle Aufgaben, die unmittelbar nachgelagert sind, erfolgreich sind. aus. Dies bedeutet, dass die Ausführung von Aufgaben, die zu einer bestimmten DAG-Ausführung gehören, durch die Ausführung von Aufgaben aus der vorherigen DAG-Ausführung verlangsamt werden kann. Weitere Informationen finden Sie in der Airflow-Dokumentation.

Airflow-Konfiguration skalieren

Airflow bietet Airflow-Konfigurationsoptionen, mit denen gesteuert wird, wie viele Aufgaben und DAGs Airflow gleichzeitig ausführen kann. Überschreiben Sie die Werte für Ihre Umgebung, um diese Konfigurationsoptionen festzulegen.

  • Worker-Gleichzeitigkeit

    Der Parameter [core]worker_concurrency steuert die maximale Anzahl von Aufgaben, die ein Airflow-Worker gleichzeitig ausführen kann. Wenn Sie den Wert dieses Parameters mit der Anzahl der Airflow-Worker in Ihrer Cloud Composer-Umgebung multiplizieren, erhalten Sie die maximale Anzahl von Aufgaben, die in einem bestimmten Moment in Ihrer Umgebung ausgeführt werden können. Diese Anzahl wird durch die Airflow-Konfigurationsoption [core]parallelism begrenzt, die weiter unten beschrieben wird.

  • Max. aktive DAG-Ausführungen

    Die Airflow-Konfigurationsoption [core]max_active_runs_per_dag steuert die maximale Anzahl aktiver DAG-Ausführungen pro DAG. Wenn der Planer dieses Limit erreicht, werden keine weiteren DAG-Ausführungen erstellt.

    Wenn dieser Parameter falsch festgelegt ist, kann es vorkommen, dass der Planer die DAG-Ausführung drosselt, weil in einem bestimmten Moment keine weiteren DAG-Ausführungsinstanzen erstellt werden können.

  • DAG-Gleichzeitigkeit

    Die Airflow-Konfigurationsoption [core]dag_concurrency steuert die maximale Anzahl von Aufgabeninstanzen, die in jedem DAG gleichzeitig ausgeführt werden können. Er ist ein Parameter auf DAG-Ebene.

    Wenn dieser Parameter falsch festgelegt ist, kann ein Problem auftreten, bei dem die Ausführung einer einzelnen DAG-Instanz langsam ist, da nur eine begrenzte Anzahl von DAG-Aufgaben zu einem bestimmten Zeitpunkt ausgeführt werden kann.

  • Parallelität und Poolgröße

    Die Airflow-Konfigurationsoption [core]parallelism steuert, wie viele Aufgaben der Airflow-Planer in der Warteschlange des Executors in die Warteschlange stellen kann, nachdem alle Abhängigkeiten für diese Aufgaben erfüllt sind.

    Dies ist ein globaler Parameter für die gesamte Airflow-Einrichtung.

    Aufgaben werden in eine Warteschlange gestellt und in einem Pool ausgeführt. Cloud Composer-Umgebungen verwenden nur einen Pool. Die Größe dieses Pools steuert die Anzahl der Aufgaben, die vom Planer zur Ausführung in einem bestimmten Moment in die Warteschlange gestellt werden können. Wenn die Poolgröße zu klein ist, kann der Planer Aufgaben nicht für die Ausführung in die Warteschlange stellen, auch wenn Schwellenwerte, die durch die Konfigurationsoption [core]parallelism und die [core]worker_concurrency definiert werden, Konfigurationsoption multipliziert mit der Anzahl der Airflow-Worker wurde noch nicht erfüllt.

    Sie können die Poolgröße in der Airflow-UI konfigurieren (Menü > Administrator > Pools). Passen Sie die Poolgröße an das Maß an Parallelität an, das Sie in Ihrer Umgebung erwarten.