Résoudre les problèmes d'Airflow Scheduler

Cette page fournit des étapes de dépannage et des informations sur les problèmes courants liés au planificateur Airflow.

Identifier l'origine du problème

Pour commencer à résoudre les problèmes, déterminez si le problème se produit au moment de l'analyse du DAG ou lors du traitement des tâches au moment de l'exécution. Pour en savoir plus sur la durée d'analyse et la durée d'exécution, consultez l'article Différence entre le temps d'analyse du DAG et le temps d'exécution du DAG.

Inspecter les temps d'analyse du DAG

Pour vérifier si le problème survient au moment de l'analyse du DAG, procédez comme suit :

Console

  1. Dans Cloud Console, accédez à la page Environnements.

    Ouvrir la page "Environnements"

  2. Sélectionnez votre environnement dans la liste.
  3. Dans l'onglet Surveillance, consultez le graphique Temps d'analyse total pour tous les fichiers DAG de la section Exécutions DAG et identifiez les problèmes possibles.

    La section des exécutions de DAG de l'onglet "Monitoring" (Surveillance) affiche les métriques d'état des DAG dans votre environnement

gcloud

Exécutez la commande list_dags avec l'option -r pour afficher la durée d'analyse de tous vos DAG.

gcloud composer environments run ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  list_dags -- -r

Remplacez l'élément suivant :

  • ENVIRONMENT_NAME: nom de votre environnement.
  • ENVIRONMENT_LOCATION: région de votre environnement.

Le résultat de la commande ressemble à ceci :

-------------------------------------------------------------------
DagBag loading stats for /home/airflow/gcs/dags
-------------------------------------------------------------------
Number of DAGs: 5
Total task number: 13
DagBag parsing time: 0.6765180000000001
-----------+----------+---------+----------+-----------------------
file       | duration | dag_num | task_num | dags
-----------+----------+---------+----------+-----------------------
/dag_1.py  | 0.6477   |       1 |        2 | ['dag_1']
/dag_2.py  | 0.018652 |       1 |        2 | ['dag_2']
/dag_3.py  | 0.004024 |       1 |        6 | ['dag_3']
/dag_4.py  | 0.003476 |       1 |        2 | ['dag_4']
/dag_5.py  | 0.002666 |       1 |        1 | ['dag_5']
-----------+----------+---------+----------+-----------------------

Recherchez la valeur DagBag analysis time (Durée d'analyse DagBag). Une valeur élevée peut indiquer que l'un de vos DAG n'est pas mis en œuvre de manière optimale. Dans la table de sortie, vous pouvez identifier les DAG dont la durée d'analyse est longue.

Surveiller les tâches en cours d'exécution et en file d'attente

Pour vérifier si des tâches sont bloquées dans une file d'attente, procédez comme suit.

  1. Dans Cloud Console, accédez à la page Environnements.

    Ouvrir la page "Environnements"

  2. Sélectionnez le projet dans la liste.
  3. Dans l'onglet Surveillance, consultez le graphique Tâches en cours d'exécution et en file d'attente de la section Exécutions DAG et identifiez les problèmes possibles.

Résoudre les problèmes lors de l'analyse du DAG

Les sections suivantes décrivent les symptômes et les correctifs potentiels de certains problèmes courants lors de l'analyse du DAG.

Nombre de threads limité

Le fait d'autoriser le gestionnaire de processeurs DAG (la partie du programmeur qui traite les fichiers DAG) n'utilise qu'un nombre limité de threads peut affecter le temps d'analyse du DAG. Pour résoudre le problème, appliquez les modifications suivantes au fichier de configuration airflow.cfg:

  • Pour Airflow 1.10.12 et versions antérieures, utilisez le paramètre max_threads:

    [scheduler]
    max_threads = <NUMBER_OF_CORES_IN_MACHINE - 1>
    
  • Pour Airflow 1.10.1 et versions ultérieures, utilisez le paramètre parsing_processes:

    [scheduler]
    parsing_processes = <NUMBER_OF_CORES_IN_MACHINE - 1>
    

Remplacez NUMBER_OF_CORES_IN_MACHINE par le nombre de cœurs dans les machines des nœuds de calcul.

Répartition du nombre et de la durée des tâches

Airflow est confronté à des problèmes liés à la planification d'un grand nombre de petites tâches. Dans ce cas, il est recommandé d'opter pour un nombre moins élevé de tâches plus consolidées.

La planification d'un grand nombre de DAG ou de tâches en même temps peut également être une source de problèmes possible. Pour éviter ce problème, répartissez vos tâches de manière plus uniforme au fil du temps.

Résoudre les problèmes liés aux tâches en cours d'exécution et en file d'attente

Les sections suivantes décrivent les symptômes et les correctifs potentiels de certains problèmes courants liés aux tâches en cours d'exécution et en file d'attente.

Les files d'attente de tâches sont trop longues

Dans certains cas, une file d'attente de tâches peut être trop longue pour le programmeur. Pour plus d'informations sur l'optimisation des paramètres de nœud de calcul et de céleri, consultez la page Procéder à un scaling de votre environnement Cloud Composer en fonction de votre entreprise.

Ressources de cluster limitées

Vous risquez de rencontrer des problèmes de performances si le cluster GKE de votre environnement est trop petit pour gérer tous vos DAG et tâches. Dans ce cas, essayez l'une des solutions suivantes:

  • Créez un environnement avec un type de machine offrant plus de performances et migrez vos DAG vers celui-ci.
  • Créer d'autres environnements Cloud Composer et répartir les DAG entre eux.
  • Modifiez le type de machine pour les nœuds GKE, comme décrit dans la section Mettre à jour le type de machine pour les nœuds GKE. Cette procédure est sujette aux erreurs. C'est l'option la moins recommandée.
  • Mettez à niveau le type de machine de l'instance Cloud SQL qui exécute la base de données Airflow dans votre environnement, par exemple à l'aide des commandes gcloud composer environments update. Il est possible que les performances de la base de données Airflow soient lentes.

Éviter la planification de tâches pendant les intervalles de maintenance

Vous pouvez définir des intervalles de maintenance spécifiques à votre environnement. Au cours de ces périodes, les événements de maintenance pour Cloud SQL et GKE ont lieu.

Évitez de planifier des exécutions de DAG pendant les intervalles de maintenance, car cela pourrait entraîner des problèmes de planification ou d'exécution.

Rendre le programmeur Airflow ignorer les fichiers inutiles

Vous pouvez améliorer les performances du programmeur Airflow en ignorant les fichiers inutiles dans le dossier des DAG. Le programmeur Airflow ignore les fichiers et les dossiers spécifiés dans le fichier .airflowignore.

Pour que le programmeur Airflow ignore les fichiers inutiles:

  1. Créez un fichier .airflowignore.
  2. Dans ce fichier, répertoriez les fichiers et dossiers qui doivent être ignorés.
  3. 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.

Processus de programmeur Airflow mis en veille

Les utilisateurs Airflow interrompent les DAG pour éviter leur exécution. Cela évite les cycles de traitement des nœuds de calcul Airflow.

Le programmeur Airflow continue d'analyser les DAG mis en pause. Si vous souhaitez vraiment améliorer les performances d'Airflow Airflow, utilisez .airflowignore ou supprimez des DAG mis en veille du dossier des DAG.