Risoluzione dei problemi relativi al processore DAG

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:

  • 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:

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

    [Vai a Environments][console-list-env]

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Monitoraggio.

  3. Nella scheda Monitoraggio, esamina il grafico Tempo totale di analisi per tutti i file DAG nella sezione Esecuzioni DAG e identifica possibili problemi.

    La sezione Esecuzioni DAG nella scheda Monitoraggio di Composer mostra le metriche di salute per i DAG nel tuo ambiente

Controlla i tempi di analisi del DAG con la scheda Log di Cloud Composer:

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

    [Vai a Environments][console-list-env]

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Monitoraggio.

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

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

    I log del processore DAG mostrano 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:

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_SCHEDULER - 1 Sostituisci NUMBER_OF_CPUs_IN_SCHEDULER con il numero di CPU
    nello scheduler.

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:

  1. Crea un file .airflowignore.
  2. In questo file, elenca i file e le cartelle che devono essere ignorati.
  3. 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:

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 lo scheduler in modo che possa funzionare più velocemente.

  • Modifica il numero di pianificatori.

  • Aumenta il numero di processi del processore DAG in modo da eseguire l'analisi in modo più rapido. Puoi farlo aumentando il valore di [scheduler]parsing_process.

  • Riduci la frequenza dell'analisi del DAG.

  • Abbassa il carico sul database Airflow.

Passaggi successivi