Risoluzione dei problemi del processore DAG

Managed Airflow (terza generazione) | Managed Airflow (seconda generazione) | Managed Airflow (prima generazione legacy)

Questa pagina si riferisce solo ai problemi relativi all'elaborazione dei file DAG. Per i problemi di pianificazione delle attività, vedi Risoluzione dei problemi dello scheduler Airflow.

Risoluzione dei problemi del flusso di lavoro

Esaminare i log del processore DAG

Se hai DAG complessi, i processori DAG di Airflow potrebbero non analizzare tutti i DAG. Questo 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'UI di Airflow e nell'UI 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 causano il riavvio dello scheduler di Airflow.

  • Le attività di Airflow pianificate per l'esecuzione vengono annullate e le esecuzioni dei DAG che non sono state analizzate 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 dei DAG:

  • Correggi o rimuovi i DAG che causano problemi ai processori DAG.

Esaminare i tempi di analisi dei DAG

Per verificare se il problema si verifica durante l'analisi dei DAG, segui questi passaggi.

Console

Nella Google Cloud console puoi utilizzare la pagina Monitoraggio e la scheda Log per esaminare i tempi di analisi dei DAG.

Esamina i tempi di analisi dei DAG con la pagina Monitoraggio di Managed Service for Apache Airflow:

  1. Nella Google Cloud console, vai alla pagina Ambienti.

    [Vai agli ambienti][console-list-env]

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Si apre la pagina Monitoraggio.

  3. Nella scheda Monitoraggio, seleziona Statistiche DAG ed 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 dei DAG in diversi cicli di analisi dei DAG.

    Il tempo totale di analisi per tutti i file DAG viene visualizzato nella scheda Monitoraggio

Esamina i tempi di analisi dei DAG con la scheda Log di Managed Service for Apache Airflow:

  1. Nella Google Cloud console, vai alla pagina Ambienti.

    [Vai agli ambienti][console-list-env]

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Si apre la pagina Monitoraggio.

  3. Vai alla scheda Log e, nell'albero di navigazione Tutti i log , seleziona la sezione Gestore processore DAG.

  4. Esamina i log dag-processor-manager e identifica possibili problemi.

    I log del processore DAG mostreranno i tempi di analisi del DAG

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:

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 DAG non è implementato in modo ottimale. Dalla tabella di output puoi identificare i DAG con un tempo di analisi lungo.

Risolvere i problemi durante l'analisi dei DAG

Le sezioni seguenti descrivono i sintomi e le potenziali correzioni per alcuni problemi comuni durante l'analisi dei DAG.

Numero limitato di thread

Consentire ai processori DAG di utilizzare solo un numero limitato di thread potrebbe influire sui tempi di analisi dei DAG.

Per risolvere il problema, esegui l'override dell'opzione di configurazione di [scheduler]parsing_processes Airflow. Imposta il valore iniziale sul numero di vCPU utilizzate dallo scheduler, meno una CPU. Ad esempio, se lo scheduler utilizza 2 vCPU, imposta questo valore su 1. Poi regola l'allocazione delle risorse dello scheduler in modo che funzioni a circa il 70% della capacità di vCPU o memoria.

Impedire al processore DAG di ignorare i file non necessari

Puoi migliorare il rendimento del processore DAG di Airflow (che viene eseguito insieme allo scheduler di Airflow in Managed Airflow (seconda generazione)) saltando 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:

  1. Crea un file .airflowignore.
  2. In questo file, elenca i file e le cartelle da ignorare.
  3. Carica questo file nella cartella /dags del bucket dell'ambiente.

Per saperne di più sul formato del file .airflowignore, consulta la documentazione di Airflow.

Airflow elabora i DAG in pausa

Puoi mettere in pausa i DAG per impedirne l'esecuzione. In questo modo si risparmiano le risorse dei worker di Airflow.

I processori DAG di Airflow continuano ad analizzare i DAG in pausa. 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 correzioni 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, viene visualizzato un riquadro di avviso rosso con il messaggio 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 dei DAG:

Sezione Chiave Valore
core dag_file_processor_timeout Nuovo valore di timeout

Un DAG non è visibile nell'UI di Airflow o nell'UI DAG e lo scheduler non lo pianifica

Il processore DAG analizza ogni DAG prima che possa essere pianificato dallo scheduler e prima che un DAG diventi visibile in the Airflow UI or DAG UI.

Le seguenti opzioni di configurazione di Airflow definiscono i timeout per l'analisi dei DAG:

Se un DAG non è visibile nell'UI di Airflow o nell'UI DAG:

  • Controlla i log del processore DAG per verificare se il processore DAG è 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 se lo scheduler funziona 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 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ù tempo rispetto al numero di secondi definito in [core]dagbag_import_timeout, aumenta questo timeout.

  • Se l'analisi di tutti i DAG richiede più tempo rispetto al numero di secondi definito 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.

  • Modifica il numero di scheduler.

  • Aumenta il numero di processi del processore DAG in modo che l'analisi possa essere eseguita più velocemente. Puoi farlo aumentando il valore di [scheduler]parsing_processes.

  • Diminuisci la frequenza di analisi dei DAG.

  • Riduci il carico sul database Airflow.

Passaggi successivi