Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Esta página refere-se apenas a problemas relacionados com o processamento de ficheiros DAG. Para problemas de agendamento de tarefas, consulte o artigo Resolva problemas do agendador do Airflow.
Fluxo de trabalho de resolução de problemas
Inspecione os registos do processador DAG
Se tiver DAGs complexos, os processadores de DAGs do Airflow podem não analisar todos os seus DAGs. Isto pode originar muitos problemas com os seguintes sintomas.
Sintomas:
Se um processador DAG encontrar problemas ao analisar os seus DAGs, pode levar a uma combinação dos problemas indicados. Se os DAGs forem gerados dinamicamente, estes problemas podem ter um impacto maior em comparação com os DAGs estáticos.
- Os DAGs não são visíveis na IU do Airflow nem na IU de DAGs.
- Os DAGs não estão agendados para execução.
- Existem erros nos registos do processador DAG, por exemplo:
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.
ou
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.
Os processadores DAG têm problemas que levam a reinícios do programador do Airflow.
As tarefas do Airflow agendadas para execução são canceladas e as execuções de DAGs para DAGs que não foram analisados podem ser marcadas como
failed
. Por exemplo: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.
Solução:
Aumente os parâmetros relacionados com a análise DAG:
Aumente
[core]dagbag_import_timeout
para, pelo menos, 120 segundos (ou mais, se necessário).Aumente
[core]dag_file_processor_timeout
para, pelo menos, 180 segundos (ou mais, se necessário). Este valor tem de ser superior a[core]dagbag_import_timeout
.
Corrija ou remova DAGs que causem problemas aos processadores de DAGs.
Inspeção dos tempos de análise de DAG
Para verificar se o problema ocorre no momento da análise do DAG, siga estes passos.
Consola
Na Google Cloud consola, pode usar a página Monitorização e o separador Registos para inspecionar os tempos de análise de DAGs.
Inspecione os tempos de análise de DAGs com a página de monitorização do Cloud Composer:
Na Google Cloud consola, aceda à página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. É apresentada a página Monitorização.
No separador Monitorização, selecione Estatísticas de DAG e reveja o gráfico Tempo de análise total para todos os ficheiros DAG para identificar possíveis problemas. Recomendamos que monitorize este gráfico durante algum tempo para identificar problemas de análise de DAGs ao longo de vários ciclos de análise de DAGs.
Inspecione os tempos de análise DAG com o separador Registos do Cloud Composer:
Na Google Cloud consola, aceda à página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. É apresentada a página Monitorização.
Aceda ao separador Registos e, na árvore de navegação Todos os registos, selecione a secção Gestor do processador DAG.
Reveja os registos
dag-processor-manager
e identifique possíveis problemas.
gcloud
Use o comando dags report
para ver o tempo de análise de todos os seus DAGs.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
dags report
Substituir:
ENVIRONMENT_NAME
com o nome do ambiente.LOCATION
com a região onde o ambiente está localizado.
O resultado do comando tem um aspeto semelhante ao seguinte:
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
Procure o valor da duração de cada um dos DAGs indicados na tabela. Um valor elevado pode indicar que um dos seus DAGs não está implementado de forma ideal. Na tabela de resultados, pode identificar os DAGs com um tempo de análise longo.
Resolução de problemas no momento da análise do DAG
As secções seguintes descrevem os sintomas e as potenciais correções para alguns problemas comuns no momento da análise do DAG.
Número limitado de discussões
Permitir que os processadores de DAG usem apenas um número limitado de threads pode afetar os tempos de análise de DAG.
Para resolver o problema, substitua a opção de configuração do [scheduler]parsing_processes
Airflow. Defina o valor inicial para o número de vCPUs usadas pelo programador, menos uma CPU. Por exemplo, se o programador usar 2 vCPUs, defina este valor como 1. Em seguida, ajuste a atribuição de recursos do programador para que funcione a ~70% da capacidade de vCPU ou de memória.
Faça com que o processador DAG ignore ficheiros desnecessários
Pode melhorar o desempenho do processador DAG do Airflow (que é executado juntamente com o agendador do Airflow no Cloud Composer 2) ignorando ficheiros desnecessários na pasta DAGs. O processador DAG do Airflow ignora os ficheiros e as pastas especificados no ficheiro.airflowignore
.
Para fazer com que o processador DAG do Airflow ignore ficheiros desnecessários:
- Crie um ficheiro
.airflowignore
. - Neste ficheiro, liste os ficheiros e as pastas que devem ser ignorados.
- Carregue este ficheiro para a pasta
/dags
no contentor do seu ambiente.
Para mais informações sobre o formato de ficheiro .airflowignore
, consulte a
documentação do Airflow.
O Airflow pausou os DAGs de processamento
Pode pausar DAGs para impedir a respetiva execução. Isto poupa recursos dos trabalhadores do Airflow.
Os processadores DAG do Airflow continuam a analisar os DAGs pausados. Se quiser
melhorar o desempenho dos processadores de DAGs, use
.airflowignore
ou elimine
DAGs pausados da pasta DAGs.
Problemas comuns
As secções seguintes descrevem os sintomas e as potenciais correções para alguns problemas de análise comuns.
Limite de tempo excedido para a importação do carregamento do DAG
Sintoma:
- Na interface Web do Airflow, na parte superior da página da lista de DAGs, é apresentada uma caixa de alerta vermelho
Broken DAG: [/path/to/dagfile] Timeout
. No Cloud Monitoring: os registos
airflow-scheduler
contêm entradas semelhantes a:ERROR - Process timed out
ERROR - Failed to import: /path/to/dagfile
AirflowTaskTimeout: Timeout
Correção:
Substitua a opção de configuração do dag_file_processor_timeout
Airflow
e permita mais tempo para a análise DAG:
Secção | Chave | Valor |
---|---|---|
core |
dag_file_processor_timeout |
Valor de limite de tempo novo |
Um DAG não é visível na IU do Airflow nem na IU do DAG, e o programador não o agenda
O processador de DAGs analisa cada DAG antes de poder ser agendado pelo agendador e antes de um DAG ficar visível na IU do Airflow ou na IU do DAG.
As seguintes opções de configuração do Airflow definem os limites de tempo para analisar DAGs:
[core]dagbag_import_timeout
define quanto tempo o processador DAG tem para analisar um único DAG.[core]dag_file_processor_timeout
define o tempo total que o processador de DAG pode gastar na análise de todos os DAGs.
Se um DAG não estiver visível na IU do Airflow ou na IU do DAG:
Verifique os registos do processador de DAG se o processador de DAG conseguir processar corretamente o seu DAG. Em caso de problemas, pode ver as seguintes entradas de registo nos registos do processador ou do programador de DAGs:
[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.
Verifique os registos do agendador para ver se o agendador funciona corretamente. Em caso de problemas, pode ver as seguintes entradas de registo nos registos do agendador:
DagFileProcessorManager (PID=732) last sent a heartbeat 240.09 seconds ago! Restarting it Process timed out, PID: 68496
Soluções:
Corrija todos os erros de análise DAG. O processador de DAGs analisa vários DAGs e, em casos raros, os erros de análise de um DAG podem afetar negativamente a análise de outros DAGs.
Se a análise do seu DAG demorar mais do que o número de segundos definido em
[core]dagbag_import_timeout
, aumente este limite de tempo.Se a análise de todos os seus DAGs demorar mais do que a quantidade de segundos definida em
[core]dag_file_processor_timeout
, aumente este limite de tempo.Se o seu DAG demorar muito tempo a ser analisado, também pode significar que não está implementado de forma ideal. Por exemplo, se ler muitas variáveis de ambiente ou fizer chamadas para serviços externos ou para a base de dados do Airflow. Na medida do possível, evite realizar essas operações em secções globais de DAGs.
Aumente os recursos de CPU e memória para o Scheduler para que possa funcionar mais rapidamente.
Aumente o número de processos do processador de DAG para que a análise possa ser feita mais rapidamente. Pode fazê-lo aumentando o valor de
[scheduler]parsing_process
.
O que se segue?
- Resolução de problemas de sincronização de ficheiros
- Resolução de problemas do agendador do Airflow
- Resolução de problemas de DAGs