Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Cette page ne concerne que les problèmes liés au traitement des fichiers DAG. Pour les problèmes de planification des tâches, consultez Résoudre les problèmes liés au planificateur Airflow.
Procédure de dépannage
Inspecter les journaux du processeur DAG
Si vous avez des DAG complexes, il est possible que le processeur DAG n'en analyse pas tous. Cela peut entraîner de nombreux problèmes présentant les symptômes suivants.
Symptômes :
Si le processeur de DAG rencontre des problèmes lors de l'analyse de vos DAG, cela peut entraîner une combinaison des problèmes listés ici. Si les DAG sont générés de manière dynamique, ces problèmes peuvent avoir un impact plus important que pour les DAG statiques.
Les DAG ne sont pas visibles dans l'interface utilisateur d'Airflow et dans l'interface utilisateur du DAG.
Les DAG ne sont pas planifiés pour l'exécution.
Les journaux du processeur DAG contiennent des erreurs, par exemple:
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.
Les processeurs DAG rencontrent des problèmes qui entraînent des redémarrages.
Les tâches Airflow planifiées pour l'exécution sont annulées, et les exécutions de DAG pour les DAG qui n'ont pas pu être analysés peuvent être marquées comme
failed
. Exemple :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.
Solution :
Augmentation des paramètres liés à l'analyse des DAG:
Augmentez dagbag-import-timeout à au moins 120 secondes (ou plus, si nécessaire).
Augmentez dag-file-processor-timeout à au moins 180 secondes (ou plus, si nécessaire). Cette valeur doit être supérieure à
dagbag-import-timeout
.
Corrigez ou supprimez les DAG qui causent des problèmes au processeur DAG.
Inspecter les durées d'analyse des DAG
Pour vérifier si le problème se produit au moment de l'analyse du DAG, procédez comme suit :
Console
Dans la console Google Cloud , vous pouvez utiliser la page Surveillance et l'onglet Journaux pour inspecter les durées d'analyse des DAG.
Inspectez les durées d'analyse des DAG à l'aide de la page de surveillance de Cloud Composer:
Dans la console Google Cloud , accédez à la page Environnements.
Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Surveillance s'ouvre.
Dans l'onglet Surveillance, consultez le graphique Temps total d'analyse pour tous les fichiers DAG de la section Exécutions DAG et identifiez les problèmes potentiels.
Inspectez les durées d'analyse des DAG dans l'onglet Journaux Cloud Composer:
Dans la console Google Cloud , accédez à la page Environnements.
Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Surveillance s'ouvre.
Accédez à l'onglet Journaux, puis dans l'arborescence de navigation Tous les journaux, sélectionnez la section Gestionnaire de processeur DAG.
Examinez les journaux
dag-processor-manager
et identifiez les problèmes potentiels.
gcloud
Exécutez la commande dags report
pour afficher le temps d'analyse de tous vos DAG.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
dags report
Remplacez :
ENVIRONMENT_NAME
par le nom de l'environnement.LOCATION
par la région où se trouve l'environnement.
Le résultat de la commande ressemble à ceci :
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
Recherchez la valeur duration pour chacun des dags listés dans le tableau. Une valeur élevée peut indiquer que l'un de vos DAG n'est pas mis en œuvre de manière optimale. La table de sortie vous permet d'identifier les DAG dont la durée d'analyse est longue.
Résoudre les problèmes rencontrés au moment de l'analyse du DAG
Les sections suivantes décrivent les symptômes et les correctifs potentiels pour certains problèmes courants qui surviennent au moment de l'analyse du DAG.
Nombre limité de threads
Le fait d'autoriser le gestionnaire de processeurs DAG à utiliser un nombre limité de threads peut avoir une incidence sur le temps d'analyse des DAG.
Pour résoudre le problème, remplacez les options de configuration Airflow suivantes:
Remplacez le paramètre
parsing_processes
:Section Clé Valeur Remarques scheduler
parsing_processes
NUMBER_OF_CPUs_IN_SCHEDULER - 1
Remplacez NUMBER_OF_CPUs_IN_SCHEDULER
par le nombre de processeurs
dans l'ordonnanceur.
Forcer le processeur DAG à ignorer les fichiers inutiles
Vous pouvez améliorer les performances du processeur DAG en ignorant les fichiers inutiles dans le dossier des DAG. Le processeur DAG ignore les fichiers et dossiers spécifiés dans le fichier .airflowignore
.
Pour que le processeur DAG ignore les fichiers inutiles, procédez comme suit:
- Créez un fichier
.airflowignore
. - Dans ce fichier, répertoriez les fichiers et dossiers à ignorer.
- Importez ce fichier dans le dossier
/dags
du bucket de votre environnement.
Pour en savoir plus sur le format de fichier .airflowignore
, consultez la documentation Airflow.
Airflow traite les DAG interrompus
Les utilisateurs Airflow peuvent interrompre un DAG pour en éviter l'exécution. Cela permet d'économiser les cycles de traitement des nœuds de calcul Airflow.
Airflow continue d'analyser les DAG interrompus. Si vous souhaitez vraiment améliorer les performances du processeur DAG, utilisez .airflowignore
ou supprimez les DAG interrompus dans le dossier des DAG.
Problèmes courants
Les sections suivantes décrivent les symptômes et les correctifs potentiels de certains problèmes d'analyse courants.
Délai avant expiration de l'importation du chargement DAG
Symptôme :
- Dans l'interface Web Airflow, en haut de la page de la liste des DAG, une zone d'alerte rouge indique
Broken DAG: [/path/to/dagfile] Timeout
. Dans Cloud Monitoring: les journaux
airflow-scheduler
contiennent des entrées semblables aux suivantes:ERROR - Process timed out
ERROR - Failed to import: /path/to/dagfile
AirflowTaskTimeout: Timeout
Correctif :
Remplacez l'option de configuration Airflow dag_file_processor_timeout
et allouez plus de temps à l'analyse du DAG:
Section | Clé | Valeur |
---|---|---|
core |
dag_file_processor_timeout |
Nouvelle valeur du délai |
Un DAG n'est pas visible dans l'UI d'Airflow ni dans l'UI du DAG, et le planificateur ne le planifie pas
Le processeur DAG analyse chaque DAG avant qu'il ne puisse être planifié par le planificateur et avant qu'un DAG ne devienne visible dans l'interface utilisateur d'Airflow ou dans l'interface utilisateur du DAG.
Les options de configuration Airflow suivantes définissent les délais avant expiration pour l'analyse des DAG:
[core]dagbag_import_timeout
définit le temps dont le processeur DAG a besoin pour analyser un seul DAG.[core]dag_file_processor_timeout
définit la durée totale que le processeur DAG peut passer à analyser tous les DAG.
Si un DAG n'est pas visible dans l'interface utilisateur d'Airflow ou de DAG:
Vérifiez les journaux du processeur DAG pour voir s'il est en mesure de traiter correctement votre DAG. En cas de problème, les entrées de journal suivantes peuvent s'afficher dans les journaux du processeur DAG ou du planificateur:
[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.
Vérifiez les journaux du planificateur pour voir s'il fonctionne correctement. En cas de problème, les entrées de journal suivantes peuvent s'afficher dans les journaux du planificateur:
DagFileProcessorManager (PID=732) last sent a heartbeat 240.09 seconds ago! Restarting it Process timed out, PID: 68496
Solutions :
Corrigez toutes les erreurs d'analyse DAG. Le processeur DAG analyse plusieurs DAG. Dans de rares cas, les erreurs d'analyse d'un DAG peuvent avoir un impact négatif sur l'analyse d'autres DAG.
Si l'analyse de votre DAG prend plus de secondes que celles définies dans
[core]dagbag_import_timeout
, augmentez ce délai avant expiration.Si l'analyse de tous vos DAG prend plus de secondes que celles définies dans
[core]dag_file_processor_timeout
, augmentez ce délai avant expiration.Si l'analyse de votre DAG prend beaucoup de temps, cela peut également signifier qu'il n'est pas implémenté de manière optimale. Par exemple, s'il lit de nombreuses variables d'environnement ou effectue des appels à des services externes ou à la base de données Airflow. Dans la mesure du possible, évitez d'effectuer de telles opérations dans les sections globales des DAG.
Augmentez les ressources de processeur et de mémoire pour le planificateur afin qu'il puisse fonctionner plus rapidement.
Augmentez le nombre de processus de processeur DAG afin que l'analyse puisse être effectuée plus rapidement. Pour ce faire, augmentez la valeur de
[scheduler]parsing_process
.
Étapes suivantes
- Résoudre les problèmes liés à Airflow Scheduler
- Découvrez comment résoudre les problèmes liés aux DAG.