Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Esta página se refere apenas a problemas relacionados ao processamento de arquivos DAG. Para problemas de programação de tarefas, consulte Solução de problemas do programador do Airflow.
Como resolver problemas do fluxo de trabalho
Como inspecionar registros do processador de DAG
Se você tiver DAGs complexos, o processador de DAG pode não analisar todos eles. Isso pode causar muitos problemas que têm os seguintes sintomas.
Sintomas:
Se o processador de DAGs encontrar problemas ao analisar seus DAGs, isso poderá levar a uma combinação dos problemas listados aqui. Se os DAGs forem gerados dinamicamente, esses problemas poderão ser mais impactantes em comparação com os DAGs estáticos.
Os DAGs não estão visíveis na IU do Airflow e na IU do DAG.
Os DAGs não são programados para execução.
Há erros nos registros do processador de 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 de DAG têm problemas que levam a reinicializações.
As tarefas do Airflow programadas para execução são canceladas, e as execuções de DAGs que não foram analisados podem ser marcadas como
failed
. 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 à análise do DAG:
Aumente dagbag-import-timeout para pelo menos 120 segundos (ou mais, se necessário).
Aumente dag-file-processor-timeout para pelo menos 180 segundos (ou mais, se necessário). Esse valor precisa ser maior que
dagbag-import-timeout
.
Corrija ou remova os DAGs que causam problemas no processador de DAGs.
Como inspecionar tempos de análise do DAG
Para verificar se o problema acontece no momento da análise do DAG, siga estas etapas.
Console
No console do Google Cloud , use a página Monitoring e a guia Registros para inspecionar os tempos de análise do DAG.
Inspecione os tempos de análise do DAG na página de monitoramento do Cloud Composer:
No console Google Cloud , acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Monitoring é aberta.
Na guia Monitoramento, consulte o gráfico Tempo total de análise de todos os arquivos DAG na seção Execuções do DAG e identifique possíveis problemas.
Inspecione os tempos de análise do DAG na guia Registros do Cloud Composer:
No console Google Cloud , acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Monitoring é aberta.
Acesse a guia Registros e, na árvore de navegação Todos os registros, selecione a seção Gerenciador do processador DAG.
Analise os registros
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
Substitua:
ENVIRONMENT_NAME
pelo nome do ambienteLOCATION
pela região em que o ambiente está localizado;
A saída do comando será semelhante a esta:
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
Procure o valor de duração para cada um dos DAGs listados na tabela. Um valor grande pode indicar que um dos seus DAGs não está implementado da maneira ideal. Na tabela de respostas, é possível identificar quais DAGs têm um longo tempo de análise.
Solução de problemas no momento da análise do DAG
As seções a seguir descrevem sintomas e possíveis correções para alguns problemas comuns no tempo de análise do DAG.
Número limitado de linhas de execução
Permitir que o gerenciador do processador DAG use apenas um número limitado de linhas de execução pode afetar o tempo de análise do DAG.
Para resolver o problema, substitua as seguintes opções de configuração do Airflow:
Substitua o parâmetro
parsing_processes
:Seção Chave Valor Observações scheduler
parsing_processes
NUMBER_OF_CPUs_IN_SCHEDULER - 1
Substitua NUMBER_OF_CPUs_IN_SCHEDULER
pelo número de CPUs
no programador.
Fazer o processador de DAG ignorar arquivos desnecessários
É possível melhorar o desempenho do processador de DAG ignorando arquivos desnecessários na pasta de DAGs. O processador de DAG ignora arquivos e pastas especificados no arquivo .airflowignore
.
Para fazer com que o processador de DAG ignore arquivos desnecessários:
- Crie um arquivo
.airflowignore
. - Nesse arquivo, liste as pastas e os arquivos que serão ignorados.
- Faça o upload desse arquivo para a pasta
/dags
no bucket do seu ambiente.
Para mais informações sobre o formato de arquivo .airflowignore
, consulte a
documentação do Airflow.
O Airflow processa DAGs pausados
Os usuários do Airflow pausam os DAGs para evitar a execução. Isso economiza ciclos de processamento de workers do Airflow.
O Airflow vai continuar analisando DAGs pausados. Se você realmente quiser melhorar o desempenho do processador de DAGs, use .airflowignore
ou exclua os DAGs pausados da pasta de DAGs.
Problemas comuns
As seções a seguir descrevem sintomas e possíveis correções para alguns problemas comuns de análise.
A importação da carga do DAG atingiu o tempo limite
Sintoma:
- Na interface da Web do Airflow, na parte de cima da página da lista de DAGs, uma caixa alerta vermelho mostra
Broken DAG: [/path/to/dagfile] Timeout
. No Cloud Monitoring, os registros
airflow-scheduler
contêm entradas semelhantes a:ERROR - Process timed out
ERROR - Failed to import: /path/to/dagfile
AirflowTaskTimeout: Timeout
Corrigir:
Substitua a opção de configuração do Airflow dag_file_processor_timeout
e conceda mais tempo para a análise do DAG:
Seção | Chave | Valor |
---|---|---|
core |
dag_file_processor_timeout |
Novo valor de tempo limite |
Um DAG não está visível na interface do Airflow ou na interface do DAG, e o programador não o agenda.
O processador DAG analisa cada DAG antes de ser programado pelo programador e antes de um DAG ficar visível na interface do Airflow ou na interface do DAG.
As seguintes opções de configuração do Airflow definem tempos limite para analisar DAGs:
[core]dagbag_import_timeout
define o tempo que o processador de DAG tem para analisar um único DAG.[core]dag_file_processor_timeout
define o tempo total que o processador de DAG pode gastar analisando todos os DAGs.
Se um DAG não estiver visível na interface do Airflow ou na interface do DAG:
Verifique os registros do processador de DAG se ele conseguir processar corretamente seu DAG. Em caso de problemas, você poderá ver as seguintes entradas de registro nos registros 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 registros do programador para saber se ele está funcionando corretamente. Em caso de problemas, você poderá ver as seguintes entradas de registro nos registros do programador:
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 de DAG. O processador de DAG analisa vários DAGs, e, em casos raros, erros de análise de um DAG podem afetar negativamente a análise de outros DAGs.
Se a análise do DAG levar mais tempo do que o número de segundos definido em
[core]dagbag_import_timeout
, aumente esse tempo limite.Se a análise de todos os seus DAGs levar mais tempo do que o número de segundos definido em
[core]dag_file_processor_timeout
, aumente esse tempo limite.Se o DAG demorar muito para ser analisado, isso também pode significar que ele não está implementado da maneira ideal. Por exemplo, se ele lê muitas variáveis de ambiente ou faz chamadas para serviços externos ou para o banco de dados do Airflow. Na medida do possível, evite realizar essas operações em seções globais de DAGs.
Aumente os recursos de CPU e memória do Scheduler para que ele funcione mais rápido.
Aumente o número de processos do processador de DAG para que a análise possa ser feita mais rapidamente. Para isso, aumente o valor de
[scheduler]parsing_process
.
A seguir
- Resolver problemas de sincronização de arquivos
- Como solucionar problemas do Airflow Scheduler
- Como resolver problemas de DAGs