Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Auf dieser Seite werden nur Probleme im Zusammenhang mit der DAG-Dateiverarbeitung behandelt. Informationen zur Fehlerbehebung bei der Planung von Aufgaben finden Sie unter Fehlerbehebung bei Problemen mit dem Airflow-Planer.
Workflow zur Fehlerbehebung
DAG-Prozessor-Logs prüfen
Bei komplexen DAGs werden möglicherweise nicht alle DAGs vom DAG-Prozessor geparst. Dies kann zu vielen Problemen mit den folgenden Symptomen führen.
Symptome:
Wenn beim Parsen Ihrer DAGs Probleme auftreten, kann das zu einer Kombination der hier aufgeführten Probleme führen. Wenn DAGs dynamisch generiert werden, können diese Probleme im Vergleich zu statischen DAGs stärkere Auswirkungen haben.
DAGs sind in der Airflow-UI und der DAG-UI nicht sichtbar.
DAGs werden nicht zur Ausführung geplant.
In den DAG-Prozessor-Logs sind Fehler enthalten, 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.
Bei DAG-Prozessoren treten Probleme auf, die zu Neustarts führen.
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
failed
markiert. 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 dagbag-import-timeout auf mindestens 120 Sekunden (bei Bedarf auch mehr).
Erhöhen Sie dag-file-processor-timeout auf mindestens 180 Sekunden (bei Bedarf auch mehr). Dieser Wert muss größer als
dagbag-import-timeout
sein.
Korrigieren oder entfernen Sie DAGs, die Probleme mit dem DAG-Prozessor verursachen.
DAG-Parsing-Zeiten prüfen
Führen Sie folgende Schritte aus, um festzustellen, ob das Problem beim DAG-Parsen auftritt.
Console
In der Google Cloud Console können Sie auf der Seite Monitoring und auf dem Tab Logs die DAG-Parsingzeiten prüfen.
Sie können die DAG-Parsing-Zeiten auf der Cloud Composer-Monitoring-Seite prüfen:
Rufen Sie in der Google Cloud -Console die Seite Umgebungen auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Monitoring wird geöffnet.
Prüfen Sie im Tab Monitoring das Diagramm Gesamte Parsing-Zeit für alle DAG-Dateien im Abschnitt DAG-Ausführungen und identifizieren Sie mögliche Probleme.
Sie können die DAG-Parsing-Zeiten auf dem Tab Cloud Composer-Protokolle prüfen:
Rufen Sie in der Google Cloud -Console die Seite Umgebungen auf.
Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Monitoring wird geöffnet.
Rufen Sie den Tab Protokolle auf und wählen Sie im Navigationsbaum Alle Protokolle den Bereich DAG-Prozessormanager aus.
Prüfen Sie die
dag-processor-manager
-Protokolle 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_NAME
durch den Namen der Umgebung.LOCATION
durch die Region, in der sich die Umgebung befindet.
Die Ausgabe sieht dann ungefähr so aus:
Executing within the following Kubernetes cluster namespace: composer-2-0-31-airflow-2-3-3
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 für jeden in der Tabelle aufgeführten DAG nach dem Wert duration. 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.
Begrenzte Anzahl an Threads
Wenn Sie dem DAG-Prozessormanager nur eine begrenzte Anzahl an Threads verwenden lassen, kann sich dies auf die DAG-Parsing-Zeit auswirken.
Überschreiben Sie die folgenden Airflow-Konfigurationsoptionen, um das Problem zu beheben:
Parameter
parsing_processes
überschreiben:Bereich Schlüssel Wert Hinweise scheduler
parsing_processes
NUMBER_OF_CPUs_IN_DAG_PROCESSOR - 1
Ersetzen Sie NUMBER_OF_CPUs_IN_DAG_PROCESSOR
durch die Anzahl der CPUs
im DAG-Prozessor.
So bestimmen Sie, dass der DAG-Prozessor unnötige Dateien ignoriert:
Sie können die Leistung des DAG-Prozessors verbessern, wenn Sie unnötige Dateien im DAGs-Ordner überspringen. Der DAG-Prozessor ignoriert Dateien und Ordner, die in der Datei .airflowignore
angegeben sind.
So bestimmen Sie, dass der DAG-Prozessor unnötige Dateien ignoriert:
- Erstellen Sie eine
.airflowignore
-Datei. - Listen Sie in dieser Datei Dateien und Ordner auf, die ignoriert werden sollen.
- Laden Sie diese Datei in den Ordner
/dags
im Bucket Ihrer Umgebung hoch.
Weitere Informationen zum .airflowignore
-Dateiformat finden Sie in der Airflow-Dokumentation.
Airflow verarbeitet pausierte DAGs
Airflow-Nutzer pausieren DAGs, um ihre Ausführung zu vermeiden. Dies spart Verarbeitungszyklen von Airflow-Workern.
Airflow parst pausierte DAGs weiter. Wenn Sie die Leistung des DAG-Prozessors wirklich verbessern möchten, verwenden Sie .airflowignore
oder löschen 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 in einem roten Warnfeld
Broken DAG: [/path/to/dagfile] Timeout
angezeigt. In Cloud Monitoring: Die
airflow-scheduler
-Logs enthalten Einträge wie beispielsweise die folgenden:ERROR - Process timed out
ERROR - Failed to import: /path/to/dagfile
AirflowTaskTimeout: Timeout
Lösung:
Überschreiben Sie die Airflow-Konfiguration dag_file_processor_timeout
und legen Sie mehr Zeit für das DAG-Parsen fest:
Bereich | Schlüssel | Wert |
---|---|---|
core |
dag_file_processor_timeout |
Neuer Wert für die Zeitüberschreitung |
Ein DAG ist in der Airflow-Benutzeroberfläche oder der DAG-Benutzeroberfläche nicht sichtbar und wird vom Planer nicht geplant
Der DAG-Prozessor parst jeden DAG, bevor er vom Planer geplant werden kann und bevor er in der Airflow-UI oder DAG-UI sichtbar wird.
Mit den folgenden Airflow-Konfigurationsoptionen werden Zeitüberschreitungen für das Parsen von DAGs definiert:
[core]dagbag_import_timeout
definiert, wie viel Zeit der DAG-Prozessor zum Parsen eines einzelnen DAG hat.[core]dag_file_processor_timeout
definiert die Gesamtzeit, die der DAG-Prozessor für das Parsen aller DAGs aufwenden kann.
Wenn ein DAG nicht in der Airflow-UI oder DAG-UI angezeigt wird:
Prüfen Sie in den Logs des DAG-Prozessors, ob der DAG-Prozessor Ihren DAG korrekt verarbeiten kann. Bei Problemen werden in den DAG-Prozessor- oder Scheduler-Logs möglicherweise die folgenden Logeinträge 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 Scheduler-Logs, um festzustellen, ob der Scheduler ordnungsgemäß funktioniert. Bei Problemen werden in den Scheduler-Logs möglicherweise die folgenden Logeinträge angezeigt:
DagFileProcessorManager (PID=732) last sent a heartbeat 240.09 seconds ago! Restarting it Process timed out, PID: 68496
Lösungen:
Beheben Sie alle Fehler beim DAG-Parsing. Der DAG-Prozessor parst mehrere DAGs. In seltenen Fällen können Parsingfehler bei einem DAG sich negativ auf das Parsen anderer DAGs auswirken.
Wenn das Parsen Ihres DAG länger als die in
[core]dagbag_import_timeout
angegebene Anzahl von Sekunden dauert, erhöhen Sie dieses Zeitlimit.Wenn das Parsen aller DAGs länger als die in
[core]dag_file_processor_timeout
angegebene Anzahl von Sekunden dauert, erhöhen Sie diese Zeitüberschreitung.Wenn das Parsen Ihres DAGs lange dauert, kann das auch daran liegen, dass er nicht optimal implementiert ist. Das ist beispielsweise der Fall, wenn viele Umgebungsvariablen gelesen oder externe Dienste oder die Airflow-Datenbank aufgerufen werden. Vermeiden Sie möglichst solche Vorgänge in globalen Abschnitten von DAGs.
Erhöhen Sie die CPU- und Arbeitsspeicherressourcen für den DAG-Prozessor, damit er schneller arbeiten kann.