Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Questa pagina si riferisce solo ai problemi relativi all'elaborazione dei file DAG. Per i problemi di pianificazione delle attività, consulta Risoluzione dei problemi dello scheduler Airflow.
Risoluzione dei problemi del workflow
Esame dei log del processore DAG
Se hai DAG complessi, il processore DAG potrebbe non analizzarli tutti. Ciò potrebbe causare molti problemi che presentano i seguenti sintomi.
Sintomi:
Se il processore DAG riscontra problemi durante l'analisi dei DAG, potrebbe verificarsi una combinazione dei problemi elencati qui. Se i DAG vengono generati in modo dinamico, questi problemi potrebbero avere un impatto maggiore rispetto ai DAG statici.
I DAG non sono visibili nelle UI di Airflow e DAG.
I DAG non sono pianificati per l'esecuzione.
Nei log del processore DAG sono presenti errori, ad esempio:
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.
o
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.
I processori DAG riscontrano problemi che portano a riavvii.
Le attività di Airflow pianificate per l'esecuzione vengono annullate e le esecuzioni di DAG per i DAG per cui l'analisi non è riuscita potrebbero essere contrassegnate come
failed
. Ad esempio: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.
Soluzione:
Aumenta i parametri relativi all'analisi DAG:
Aumenta dagbag-import-timeout ad almeno 120 secondi (o più, se necessario).
Aumenta dag-file-processor-timeout ad almeno 180 secondi (o più, se necessario). Questo valore deve essere superiore a
dagbag-import-timeout
.
Correggi o rimuovi i DAG che causano problemi al processore DAG.
Esame dei tempi di analisi del DAG
Per verificare se il problema si verifica durante l'analisi del DAG, segui questi passaggi.
Console
Nella console Google Cloud puoi utilizzare la pagina Monitoring e la scheda Log per esaminare i tempi di analisi dei DAG.
Esamina i tempi di analisi dei DAG con la pagina Monitoring di Cloud Composer:
Nella console Google Cloud , vai alla pagina Ambienti.
Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Monitoraggio.
Nella scheda Monitoraggio, esamina il grafico Tempo totale di analisi per tutti i file DAG nella sezione Esecuzioni DAG e identifica i possibili problemi.
Esamina i tempi di analisi dei DAG nella scheda Log di Cloud Composer:
Nella console Google Cloud , vai alla pagina Ambienti.
Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Monitoraggio.
Vai alla scheda Log e seleziona la sezione Gestore processore DAG dall'albero di navigazione Tutti i log.
Esamina i log
dag-processor-manager
e identifica i possibili problemi.
gcloud
Utilizza il comando dags report
per visualizzare il tempo di analisi per tutti i tuoi DAG.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
dags report
Sostituisci:
ENVIRONMENT_NAME
con il nome dell'ambiente.LOCATION
con la regione in cui si trova l'ambiente.
L'output del comando è simile al seguente:
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
Cerca il valore Durata per ciascuno dei DAG elencati nella tabella. Un valore elevato potrebbe indicare che uno dei tuoi DAG non è implementato in modo ottimale. Dalla tabella di output, puoi identificare i DAG che hanno un lungo tempo di analisi.
Risoluzione dei problemi durante l'analisi dei DAG
Le sezioni seguenti descrivono i sintomi e le potenziali correzioni per alcuni problemi comuni durante l'analisi del DAG.
Numero limitato di thread
Se consenti al gestore del processore DAG di utilizzare solo un numero limitato di thread, il tempo di analisi del DAG potrebbe risentirne.
Per risolvere il problema, esegui l'override delle seguenti opzioni di configurazione di Airflow:
Esegui l'override del parametro
parsing_processes
:Sezione Chiave Valore Note scheduler
parsing_processes
NUMBER_OF_CPUs_IN_SCHEDULER - 1
Sostituisci NUMBER_OF_CPUs_IN_SCHEDULER
con il numero di CPU
nello scheduler.
Imposta il processore DAG in modo che ignori i file non necessari
Puoi migliorare le prestazioni del processore DAG ignorando i file non necessari nella cartella DAG. Il processore DAG ignora i file e le cartelle
specificati nel file .airflowignore
.
Per fare in modo che il processore DAG ignori i file non necessari:
- Crea un file
.airflowignore
. - In questo file, elenca i file e le cartelle da ignorare.
- Carica questo file nella cartella
/dags
del bucket del tuo ambiente.
Per saperne di più sul formato file .airflowignore
, consulta la
documentazione di Airflow.
Airflow elabora i DAG in pausa
Gli utenti di Airflow mettono in pausa i DAG per evitarne l'esecuzione. In questo modo, i worker Airflow risparmiano cicli di elaborazione.
Airflow continuerà ad analizzare i DAG in pausa. Se vuoi davvero migliorare le prestazioni del processore DAG, utilizza .airflowignore
o elimina i DAG in pausa dalla cartella DAG.
Problemi comuni
Le sezioni seguenti descrivono i sintomi e le potenziali soluzioni per alcuni problemi comuni di analisi.
Timeout di importazione del caricamento DAG
Sintomo:
- Nell'interfaccia web di Airflow, nella parte superiore della pagina dell'elenco dei DAG, un riquadro
di avviso rosso mostra
Broken DAG: [/path/to/dagfile] Timeout
. In Cloud Monitoring: i log
airflow-scheduler
contengono voci simili a:ERROR - Process timed out
ERROR - Failed to import: /path/to/dagfile
AirflowTaskTimeout: Timeout
Correzione:
Esegui l'override dell'opzione di configurazione di Airflow dag_file_processor_timeout
e concedi più tempo per l'analisi DAG:
Sezione | Chiave | Valore |
---|---|---|
core |
dag_file_processor_timeout |
Nuovo valore di timeout |
Un DAG non è visibile nella UI di Airflow o nella UI DAG e lo scheduler non lo pianifica
Il processore DAG analizza ogni DAG prima che possa essere programmato dallo scheduler e prima che un DAG diventi visibile nell'interfaccia utente di Airflow o nell'interfaccia utente DAG.
Le seguenti opzioni di configurazione di Airflow definiscono i timeout per l'analisi dei DAG:
[core]dagbag_import_timeout
definisce il tempo a disposizione del processore DAG per analizzare un singolo DAG.[core]dag_file_processor_timeout
definisce il tempo totale che il processore DAG può dedicare all'analisi di tutti i DAG.
Se un DAG non è visibile nell'UI di Airflow o DAG:
Controlla i log del processore DAG per verificare se è in grado di elaborare correttamente il DAG. In caso di problemi, potresti visualizzare le seguenti voci di log nei log del processore DAG o dello scheduler:
[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.
Controlla i log dello scheduler per verificare che funzioni correttamente. In caso di problemi, nei log dello scheduler potresti visualizzare le seguenti voci di log:
DagFileProcessorManager (PID=732) last sent a heartbeat 240.09 seconds ago! Restarting it Process timed out, PID: 68496
Soluzioni:
Correggi tutti gli errori di analisi dei file DAG. Il processore DAG analizza più DAG e, in rari casi, gli errori di analisi di un DAG possono influire negativamente sull'analisi di altri DAG.
Se l'analisi del DAG richiede più secondi di quelli definiti in
[core]dagbag_import_timeout
, aumenta questo timeout.Se l'analisi di tutti i DAG richiede più secondi di quelli definiti in
[core]dag_file_processor_timeout
, aumenta questo timeout.Se l'analisi del DAG richiede molto tempo, potrebbe anche significare che non è implementato in modo ottimale. Ad esempio, se legge molte variabili di ambiente o esegue chiamate a servizi esterni o al database Airflow. Per quanto possibile, evita di eseguire queste operazioni nelle sezioni globali dei DAG.
Aumenta le risorse di CPU e memoria per lo scheduler in modo che possa funzionare più velocemente.
Aumenta il numero di processi del processore DAG in modo che l'analisi possa essere eseguita più rapidamente. Puoi farlo aumentando il valore di
[scheduler]parsing_process
.
Passaggi successivi
- Risolvere i problemi di sincronizzazione dei file
- Risoluzione dei problemi dello scheduler Airflow
- Risoluzione dei problemi dei DAG