Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Questa pagina fa riferimento solo ai problemi relativi all'elaborazione dei file DAG. Per i problemi di pianificazione delle attività, consulta la sezione Risoluzione dei problemi relativi allo scheduler Airflow.
Risoluzione dei problemi relativi al flusso di lavoro
Controllare i log del processore DAG
Se hai DAG complessi, il processore DAG potrebbe non analizzarli tutti. Ciò potrebbe causare molti problemi con i seguenti sintomi.
Sintomi:
Se il processore DAG riscontra problemi durante l'analisi dei DAG, potrebbe verificarsi una combinazione dei problemi elencati di seguito. Se i DAG vengono generati in modo dinamico, 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 di DAG.
L'esecuzione dei DAG non è pianificata.
Sono presenti errori nei log del processore DAG, 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 causano riavvii.
Le attività Airflow pianificate per l'esecuzione vengono annullate e le esecuzioni dei DAG per i DAG di cui non è stato possibile eseguire l'analisi 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 del DAG:
Aumenta dagbag-import-timeout ad almeno 120 secondi (o più, se necessario).
Aumenta dag-file-processor-timeout fino 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.
Controllare i tempi di analisi del DAG
Per verificare se il problema si verifica al momento dell'analisi del DAG, segui questi passaggi.
Console
Nella Google Cloud console puoi utilizzare la pagina Monitoraggio e la scheda Log per controllare i tempi di analisi del DAG.
Controlla i tempi di analisi del DAG con la pagina di monitoraggio di Cloud Composer:
Nella Google Cloud console, vai alla pagina Ambienti.
Nell'elenco degli ambienti, fai clic sul nome dell'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 possibili problemi.
Controlla i tempi di analisi del DAG con la scheda Log di Cloud Composer:
Nella Google Cloud console, vai alla pagina Ambienti.
Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Monitoraggio.
Vai alla scheda Log e dalla struttura ad albero di navigazione Tutti i log, seleziona la sezione Gestore processore DAG.
Esamina i log
dag-processor-manager
e identifica i possibili problemi.
gcloud
Utilizza il comando dags report
per visualizzare il tempo di analisi di 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:
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 duration 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 tempo di analisi lungo.
Risoluzione dei problemi al momento dell'analisi del DAG
Le sezioni seguenti descrivono i sintomi e le potenziali correzioni di alcuni problemi comuni al momento dell'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 essere interessato.
Per risolvere il problema, esegui l'override delle seguenti opzioni di configurazione di Airflow:
Sostituisci il parametro
parsing_processes
:Sezione Chiave Valore Note scheduler
parsing_processes
NUMBER_OF_CPUs_IN_DAG_PROCESSOR - 1
Sostituisci NUMBER_OF_CPUs_IN_DAG_PROCESSOR
con il numero di CPU
nel processore DAG.
Impostare 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 che devono essere ignorati.
- Carica questo file nella cartella
/dags
nel bucket del tuo ambiente.
Per ulteriori informazioni 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 vengono risparmiati i cicli di elaborazione dei worker Airflow.
Airflow continuerà ad analizzare i DAG in pausa. Se vuoi davvero migliorare il rendimento 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 correzioni di alcuni problemi comuni di analisi sintattica.
Timeout dell'importazione del caricamento del 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 dag_file_processor_timeout
Airflow e concedi più tempo per l'analisi del DAG:
Sezione | Chiave | Valore |
---|---|---|
core |
dag_file_processor_timeout |
Nuovo valore di timeout |
Un DAG non è visibile nell'interfaccia utente di Airflow o nell'interfaccia utente del DAG e lo scheduler non lo pianifica
Il processore DAG analizza ogni DAG prima che possa essere programmato dall'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ò impiegare per analizzare tutti i DAG.
Se un DAG non è visibile nell'interfaccia utente di Airflow o nell'interfaccia utente del 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 del programmatore per verificare che funzioni correttamente. In caso di problemi, nei log dell'organizzatore 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 del DAG. Il processore DAG analizza più DAG e, in alcuni 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 rispetto a 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, può 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. Nella misura del 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.