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 flusso di lavoro
Controlla i log del processore DAG
Se hai DAG complessi, i processori DAG di Airflow potrebbero non analizzare tutti i tuoi DAG. Ciò potrebbe causare molti problemi con i seguenti sintomi.
Sintomi:
Se un processore DAG riscontra problemi durante l'analisi dei DAG, potrebbe verificarsi una combinazione dei problemi elencati. Se i DAG vengono generati dinamicamente, questi problemi potrebbero avere un impatto maggiore rispetto ai DAG statici.
- I DAG non sono visibili nell'interfaccia utente di Airflow e nell'interfaccia utente 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.
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
[core]dagbag_import_timeout
ad almeno 120 secondi (o più, se necessario).Aumenta
[core]dag_file_processor_timeout
ad almeno 180 secondi (o più, se necessario). Questo valore deve essere superiore a[core]dagbag_import_timeout
.
Correggi o rimuovi i DAG che causano problemi ai processori 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. Si apre la pagina Monitoraggio.
Nella scheda Monitoraggio, seleziona Statistiche DAG e esamina il grafico Tempo totale di analisi per tutti i file DAG per identificare possibili problemi. Ti consigliamo di monitorare questo grafico per un po' di tempo per identificare i problemi di analisi DAG in diversi cicli di analisi DAG.
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. Si apre 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 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:
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 con 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 ai processori DAG di utilizzare solo un numero limitato di thread, i tempi di analisi del DAG potrebbero risentirne.
Per risolvere il problema, esegui l'override dell'opzione di configurazione di Airflow [scheduler]parsing_processes
. Imposta il valore iniziale sul
numero di vCPU utilizzate da un singolo processore DAG. Poi regola l'allocazione delle risorse per i processori DAG in modo che funzionino a circa il 70% della capacità di vCPU o memoria.
Imposta il processore DAG in modo che ignori i file non necessari
Puoi migliorare le prestazioni del processore DAG di Airflow ignorando i file non necessari nella cartella DAG. Il processore DAG di Airflow ignora i file e le cartelle specificati nel file.airflowignore
.
Per fare in modo che il processore DAG di Airflow 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
Puoi mettere in pausa i DAG per interromperne l'esecuzione. In questo modo si risparmiano risorse dei worker Airflow.
I processori DAG di Airflow continuano ad analizzare i DAG sospesi. Se vuoi migliorare il rendimento dei processori 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, potresti visualizzare le seguenti voci di log nei log dello scheduler:
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 il processore DAG in modo che possa funzionare più velocemente.
Passaggi successivi
- Risolvere i problemi di sincronizzazione dei file
- Risoluzione dei problemi dello scheduler Airflow
- Risoluzione dei problemi dei DAG