Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
Diese Seite bezieht sich nur auf Probleme im Zusammenhang mit der Verarbeitung von DAG-Dateien. Informationen zu Problemen beim Planen von Aufgaben finden Sie unter Fehlerbehebung bei Airflow Scheduler-Problemen.
Fehlerbehebung beim Workflow
DAG-Protokolle prüfen
Bei komplexen DAGs werden möglicherweise nicht alle DAGs von Airflow-DAG-Prozessoren geparst. Dies kann zu vielen Problemen führen, die die folgenden Symptome aufweisen.
Symptome :
Wenn bei der Verarbeitung von DAGs Probleme auftreten, kann dies zu einer Kombination der aufgeführten Probleme führen. Wenn DAGs dynamisch generiert werden, können diese Probleme im Vergleich zu statischen DAGs schwerwiegender sein.
- DAGs sind in der Airflow-UI und der DAG-UI nicht sichtbar.
- DAGs werden nicht zur Ausführung geplant.
- In den DAG-Protokollen treten Fehler auf, z. B.:
dag-processor-manager [2023-04-21 21:10:44,510] {manager.py:1144} ERROR - Processor for /home/airflow/gcs/dags/dag-example.py with PID 68311 started at 2023-04-21T21:09:53.772793+00:00 has timed out, killing it.oder
dag-processor-manager [2023-04-26 06:18:34,860] {manager.py:948} ERROR - Processor for /home/airflow/gcs/dags/dag-example.py exited with return code 1.Airflow-Aufgaben, die zur Ausführung geplant sind, werden abgebrochen und DAG-Ausführungen für DAGs, die nicht geparst werden konnten, werden möglicherweise als
failedmarkiert. Beispiel:airflow-scheduler Failed to get task '<TaskInstance: dag-example.task1--1 manual__2023-04-17T10:02:03.137439+00:00 [removed]>' for dag 'dag-example'. Marking it as removed.
Lösung :
Erhöhen Sie die Parameter für das DAG-Parsing:
Erhöhen Sie
[core]dagbag_import_timeoutauf mindestens 120 Sekunden (oder mehr, falls erforderlich).Erhöhen Sie
[core]dag_file_processor_timeoutauf mindestens 180 Sekunden (oder mehr, falls erforderlich). Dieser Wert muss höher als[core]dagbag_import_timeoutsein.
Korrigieren oder entfernen Sie DAGs, die Probleme für DAG-Prozessoren verursachen.
DAG-Parsing-Zeiten prüfen
Führen Sie folgende Schritte aus, um festzustellen, ob das Problem beim DAG-Parsen auftritt.
Console
In Google Cloud der Console können Sie auf der Seite Monitoring und auf dem Tab Logs die DAG-Parsing-Zeiten prüfen.
So prüfen Sie die DAG-Parsing-Zeiten auf der Seite „Monitoring“ von Managed Service for Apache Airflow:
Rufen Sie in der Google Cloud Console die Umgebungen Seite auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Monitoring wird geöffnet.
Wählen Sie auf dem Tab Monitoring die Option DAG-Statistiken aus und prüfen Sie das Diagramm Gesamt-Parsingzeit für alle DAG-Dateien, um mögliche Probleme zu identifizieren. Wir empfehlen, dieses Diagramm einige Zeit zu beobachten, um Probleme beim DAG-Parsing über mehrere DAG-Parsing-Zyklen hinweg zu identifizieren.
So prüfen Sie die DAG-Parsing-Zeiten auf dem Tab Logs von Managed Service for Apache Airflow:
Rufen Sie in der Google Cloud Console die Umgebungen Seite auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Monitoring wird geöffnet.
Rufen Sie den Tab Logs auf und wählen Sie im Navigationsbaum Alle Logs den Bereich DAG-Prozessormanager aus.
Prüfen Sie die
dag-processor-manager-Logs und identifizieren Sie mögliche Probleme.
gcloud
Verwenden Sie den Befehl dags report, um die Parsing-Zeit für alle DAGs anzuzeigen.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
dags report
Ersetzen Sie:
ENVIRONMENT_NAMEdurch den Namen der Umgebung.LOCATIONdurch die Region, in der sich die Umgebung befindet.
Die Ausgabe sieht dann ungefähr so aus:
file | duration | dag_num | task_num | dags
======================+================+=========+==========+===================
/manydagsbig.py | 0:00:00.038334 | 2 | 10 | serial-0,serial-0
/airflow_monitoring.py| 0:00:00.001620 | 1 | 1 | airflow_monitoring
Suchen Sie nach dem Wert duration für jeden der in der Tabelle aufgeführten DAGs. Ein hoher Wert kann darauf hinweisen, dass einer Ihrer DAGs nicht optimal implementiert ist. In der Ausgabetabelle können Sie ermitteln, welche DAGs eine lange Parsing-Zeit haben.
Probleme zur DAG-Parsing-Zeit beheben
In folgenden Abschnitten werden Symptome und mögliche Lösungen für einige während der DAG-Parsing-Zeit häufig auftretende Probleme beschrieben.
Bestimmen, dass der DAG-Prozessor unnötige Dateien ignoriert
Sie können die Leistung des Airflow-DAG-Prozessors verbessern , wenn Sie unnötige Dateien im DAGs-Ordner überspringen. Der Airflow-DAG-Prozessor ignoriert Dateien und Ordner, die in der Datei.airflowignore angegeben sind.
So bestimmen Sie, dass der Airflow-DAG-Prozessor unnötige Dateien ignoriert:
- Erstellen Sie eine Datei
.airflowignore. - Listen Sie in dieser Datei Dateien und Ordner auf, die ignoriert werden sollen.
- Laden Sie diese Datei hoch in den Ordner
/dagsin Ihrem Umgebungs-Bucket.
Weitere Informationen zum Dateiformat .airflowignore finden Sie in der
Airflow-Dokumentation.
Airflow verarbeitet pausierte DAGs
Sie können DAGs pausieren, um zu verhindern, dass sie ausgeführt werden. Dadurch werden Ressourcen von Airflow-Workern gespart.
Airflow-DAG-Prozessoren parsen pausierte DAGs weiter. Wenn Sie die
Leistung von DAG-Prozessoren verbessern möchten, verwenden Sie
.airflowignore oder löschen Sie
pausierte DAGs aus dem DAGs-Ordner.
Allgemeine Probleme
In den folgenden Abschnitten werden Symptome und mögliche Lösungen für einige häufig auftretende Parsing-Probleme beschrieben.
Zeitüberschreitung beim Laden des DAG
Symptom:
- In der Airflow-Weboberfläche wird oben auf der Seite mit der DAG-Liste der rote Warnhinweis
Broken DAG: [/path/to/dagfile] Timeoutangezeigt. In Cloud Monitoring: Die
airflow-scheduler-Logs enthalten Einträge wie:ERROR - Process timed outERROR - Failed to import: /path/to/dagfileAirflowTaskTimeout: Timeout
Lösung:
Überschreiben Sie die dag_file_processor_timeout Airflow
Konfigurationsoption und erlauben Sie mehr Zeit für das DAG-Parsing:
| Bereich | Schlüssel | Wert |
|---|---|---|
core |
dag_file_processor_timeout |
Neuer Wert für die Zeitüberschreitung |
Ein DAG ist in der Airflow-UI oder der DAG-UI nicht sichtbar und der Planer plant ihn nicht
Der DAG-Prozessor parst jeden DAG, bevor er vom Planer geplant werden kann und bevor ein DAG sichtbar wird in der Airflow-UI oder der DAG-UI.
Die folgenden Airflow-Konfigurationsoptionen definieren Zeitüberschreitungen für das Parsen von DAGs:
[core]dagbag_import_timeoutdefiniert, wie viel Zeit der DAG-Prozessor zum Parsen eines einzelnen DAG hat.[core]dag_file_processor_timeoutdefiniert die Gesamtzeit, die der DAG-Prozessor für das Parsen aller DAGs aufwenden kann.
Wenn ein DAG in der Airflow-UI oder der DAG-UI nicht sichtbar ist:
Prüfen Sie die DAG-Protokolle, um festzustellen, ob der DAG-Prozessor Ihren DAG korrekt verarbeiten kann. Bei Problemen werden möglicherweise die folgenden Logeinträge in den DAG-Prozessor- oder Planerprotokollen angezeigt:
[2020-12-03 03:06:45,672] {dag_processing.py:1334} ERROR - Processor for /usr/local/airflow/dags/example_dag.py with PID 21903 started at 2020-12-03T03:05:55.442709+00:00 has timed out, killing it.Prüfen Sie die Planerprotokolle, um festzustellen, ob der Planer ordnungsgemäß funktioniert. Bei Problemen werden möglicherweise die folgenden Logeinträge in den Planerprotokollen angezeigt:
DagFileProcessorManager (PID=732) last sent a heartbeat 240.09 seconds ago! Restarting it Process timed out, PID: 68496
Lösungen:
Beheben Sie alle DAG-Parsing-Fehler. Der DAG-Prozessor parst mehrere DAGs. In seltenen Fällen können sich Parsing-Fehler eines DAG negativ auf das Parsen anderer DAGs auswirken.
Wenn das Parsen Ihres DAG länger dauert als die in
[core]dagbag_import_timeout, definierte Anzahl von Sekunden, erhöhen Sie diese Zeitüberschreitung.Wenn das Parsen aller DAGs länger dauert als die in in
[core]dag_file_processor_timeout, definierte Anzahl von Sekunden, erhöhen Sie diese Zeitüberschreitung.Wenn das Parsen Ihres DAG lange dauert, kann dies auch bedeuten, dass er nicht optimal implementiert ist. Beispielsweise wenn viele Umgebungsvariablen gelesen oder Aufrufe an externe Dienste oder die Airflow-Datenbank ausgeführt werden. Vermeiden Sie solche Vorgänge nach Möglichkeit in globalen Abschnitten von DAGs.
Erhöhen Sie die CPU- und Arbeitsspeicherressourcen für den DAG-Prozessor, damit er schneller arbeiten kann.
Nächste Schritte
- Fehlerbehebung bei Problemen mit der Dateisynchronisierung
- Fehlerbehebung bei Airflow Scheduler-Problemen
- Fehlerbehebung bei DAGs