Probleme mit Airflow-Planer beheben

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

Ursache des Problems ermitteln

Um mit der Fehlerbehebung zu beginnen, ermitteln Sie, ob das Problem zum Zeitpunkt der DAG-Analyse oder während der Verarbeitung von Aufgaben zur Ausführungszeit auftritt. Weitere Informationen zum Parsen von Ausführungszeiten und zur Ausführungszeit finden Sie unter Differenz zwischen DAG-Parsen und DAG-Ausführungszeit.

DAG-Parsing-Zeiten prüfen

So prüfen Sie, ob das Problem beim DAG-Parsen 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. Sehen Sie sich im Tab Monitoring im Abschnitt DAG-Ausführungen das Diagramm Gesamtanalysezeit für alle DAG-Dateien an und ermitteln Sie mögliche Probleme.

    Der Abschnitt "DAG-Ausführungen" auf dem Tab "Compose Monitoring" (Composer-Monitoring) zeigt Statusmesswerte für die DAGs in Ihrer Umgebung.

gcloud

Verwenden Sie den Befehl list_dags mit dem Flag -r, um die Analysezeit 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: Die 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 für DagBag-Parsing Zeit. Ein großer Wert kann darauf hinweisen, dass einer Ihrer DAGs nicht optimal implementiert ist. In der Ausgabetabelle können Sie feststellen, welche DAGs eine lange Parsing-Zeit haben.

Laufende Aufgaben und Aufgaben in der Warteschlange überwachen

So überprüfen Sie, ob sich Aufgaben in einer Warteschlange befinden:

  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. Überprüfen Sie auf dem Tab Monitoring das Diagramm Ausgeführte und in die Warteschlange gestellte Aufgaben im Abschnitt DAG-Ausführungen und identifizieren Sie mögliche Probleme.

Probleme bei der DAG-Parsing-Zeit beheben

In den folgenden Abschnitten werden Symptome und mögliche Lösungen für einige häufig auftretende Probleme beim DAG-Parsen beschrieben.

Begrenzte Anzahl von Threads

Wenn Sie zulassen, dass der DAG-Prozessormanager (der Teil des Planers, der DAG-Dateien verarbeitet) nur eine begrenzte Anzahl von Threads verwendet, hat dies möglicherweise Auswirkungen auf die DAG-Parsen. Führen Sie die folgenden Änderungen in der Konfigurationsdatei airflow.cfg aus, um das Problem zu beheben:

  • Für Airflow 1.10.12 und frühere Versionen verwenden Sie den Parameter max_threads:

    [scheduler]
    max_threads = <NUMBER_OF_CORES_IN_MACHINE - 1>
    
  • Für Airflow 1.10.1 und höher verwenden Sie 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 auf den Worker-Knotenmaschinen.

Anzahl und Zeitverteilung der Aufgaben

Airflow ist bekannt für Probleme beim Planen einer großen Anzahl kleiner Aufgaben. In solchen Fällen sollten Sie eine kleinere Anzahl komplexerer Aufgaben auswählen.

Eine große Anzahl von DAGs oder Aufgaben gleichzeitig kann ebenfalls eine mögliche Problemquelle sein. Damit dieses Problem vermieden wird, sollten Sie die Aufgaben gleichmäßiger verteilen.

Probleme beim Ausführen von Aufgaben und in der Warteschlange

In den folgenden Abschnitten werden Symptome und mögliche Lösungen für einige häufig auftretende Probleme bei der Ausführung und Ausführung in der Warteschlange beschrieben.

Aufgabenwarteschlangen sind zu lang

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

Eingeschränkte Clusterressourcen

Leistungsprobleme können auftreten, wenn der GKE-Cluster der Umgebung zu klein ist, um alle DAGs und Aufgaben zu verarbeiten. Probieren Sie in diesem Fall eine der folgenden Lösungen aus:

  • Erstellen Sie eine neue Umgebung mit einem Maschinentyp, der eine höhere Leistung bietet, und migrieren Sie Ihre DAGs zu diesem.
  • Erstellen Sie weitere Cloud Composer-Umgebungen und teilen Sie die DAGs zwischen ihnen auf.
  • Ändern Sie den Maschinentyp für GKE-Knoten, wie unter Maschinentyp für GKE-Knoten aktualisieren beschrieben. Da dieses Verfahren fehleranfällig ist, ist dies die am wenigsten empfohlene Option.
  • Aktualisieren Sie den Maschinentyp der Cloud SQL-Instanz, die die Airflow-Datenbank in Ihrer Umgebung ausführt, beispielsweise mit den gcloud composer environments update-Befehlen. Eine niedrige Leistung der Airflow-Datenbank kann der Grund dafür sein, dass der Planer langsam ist.

Planung von Aufgaben während der Wartungsfenster vermeiden

Sie können bestimmte Wartungsfenster für Ihre Umgebung definieren. In diesen Zeiträumen werden Wartungsereignisse für Cloud SQL und GKE ausgeführt.

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

Unnötige Dateien im Airflow-Planer ignorieren

Sie können die Leistung des Airflow-Planers verbessern, indem Sie unnötige Dateien im DAGs-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 die 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 Verarbeitungszyklen von Airflow-Workern gespeichert.

Der Airflow-Planer analysiert weiterhin pausierte DAGs. Wenn Sie die Leistung von Airflow-Shuffler verbessern möchten, verwenden Sie .airflowignore oder löschen Sie pausierte DAGs aus dem DAGs-Ordner.