Optimiser les performances et les coûts de l'environnement

Cloud Composer 1 | Cloud Composer 2

Cette page explique comment ajuster les paramètres de scaling et de performances de votre environnement en fonction des besoins de votre projet afin d'améliorer les performances et de réduire les coûts pour les ressources qui ne sont pas utilisées par votre environnement.

Autres pages sur la mise à l'échelle et l'optimisation:

Présentation du processus d'optimisation

La modification des paramètres de votre environnement peut affecter de nombreux aspects de ses performances. Nous vous recommandons d'optimiser votre environnement par itérations :

  1. Commencez avec les environnements prédéfinis.
  2. Exécutez vos DAG.
  3. Observez les performances de votre environnement.
  4. Ajustez les paramètres de scaling et de performances de votre environnement, puis répétez l'étape précédente.

Commencer avec les environnements prédéfinis

Lorsque vous créez un environnement dans la console Google Cloud, vous pouvez sélectionner l'un des trois préréglages d'environnement. Ces environnements prédéfinis définissent la configuration initiale des instances et des performances de votre environnement. Une fois votre environnement créé, vous pouvez modifier tous les paramètres de scaling et de performances du modèle prédéfini.

Nous vous recommandons de commencer par l'un des environnements prédéfinis en fonction des estimations suivantes :

  • Nombre total de DAG que vous prévoyez de déployer dans l'environnement.
  • Nombre maximal d'exécutions de DAG simultanées.
  • Nombre maximal de tâches simultanées.

Les performances de votre environnement dépendent de la mise en œuvre des DAG spécifiques que vous exécutez dans celui-ci. Le tableau suivant répertorie des estimations basées sur la consommation moyenne des ressources. Si vous prévoyez que vos DAG consomment plus de ressources, ajustez les estimations en conséquence.

Environnement prédéfini recommandé Nombre total de DAG Nombre maximal d'exécutions de DAG simultanées Nombre maximal de tâches simultanées
Petite 50 15 18
Moyenne 250 60 100
Grande 1000 250 400

Prenons pour exemple un environnement devant exécuter 40 DAG. Tous les DAG doivent être exécutés simultanément avec une tâche active par DAG. Un tel environnement utiliserait l'environnement prédéfini "Medium" (Moyen) car le nombre maximal d'exécutions et de tâches simultanées de DAG dépasse les estimations recommandées pour l'environnement prédéfini "Small" (Petit).

Exécuter vos DAG

Une fois votre environnement créé, importez-y vos DAG. Exécutez vos DAG et observez les performances de l'environnement.

Nous vous recommandons d'exécuter vos DAG selon un calendrier qui reflète l'application réelle de vos DAG. Par exemple, si vous prévoyez d'exécuter plusieurs DAG en même temps, veillez à vérifier les performances de votre environnement lorsque tous les DAG s'exécutent simultanément.

Observer les performances de votre environnement

Cette section porte sur les aspects les plus courants des réglages de capacité et de performances de Cloud Composer 2. Nous vous recommandons de suivre ce guide étape par étape car les considérations de performances les plus courantes sont traitées en premier.

Accéder au tableau de bord Monitoring

Vous pouvez surveiller les métriques de performances de votre environnement dans le tableau de bord Monitoring correspondant.

Pour accéder au tableau de bord Monitoring de votre environnement, procédez comme suit :

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

    Accéder à la page Environnements

  2. Cliquez sur le nom de votre environnement.

  3. Accédez à l'onglet Surveillance.

Surveiller les métriques de processeur et de mémoire du programmeur

Les métriques de processeur et de mémoire du programmeur Airflow vous aident à vérifier si les performances du programmeur sont affectées par un goulot d'étranglement dans les performances globales d'Airflow.

Graphiques pour les programmeurs Ariflow
Figure 1. Graphiques pour les programmeurs Airflow (cliquez pour agrandir)

Dans la section Programmeurs du tableau de bord Monitoring, observez les graphiques des programmeurs Airflow de votre environnement :

  • Utilisation totale du processeur pour les programmeurs
  • Utilisation totale de la mémoire pour les programmeurs

Ajustez-les en fonction de vos observations :

Surveiller le temps d'analyse total pour tous les fichiers DAG

Les programmeurs analysent les DAG avant de planifier leur exécution. Si l'analyse des DAG prend beaucoup de temps, cela consomme les capacités du programmeur et peut réduire les performances des exécutions DAG.

Graphique de durée d'analyse totale des DAG
Figure 2. Graphique de durée d'analyse des DAG (cliquez pour agrandir)

Dans le tableau de bord Monitoring, dans la section Statistiques du DAG, observez les graphiques correspondant à la durée totale d'analyse du DAG.

Si le nombre dépasse environ 10 secondes, vos programmeurs peuvent être surchargés par l'analyse des DAG et ne pas pouvoir exécuter efficacement les DAG. La fréquence d'analyse par défaut des DAG dans Airflow est de 30 secondes. Si la durée d'analyse du DAG dépasse ce seuil, les cycles d'analyse commencent à se chevaucher et épuisent la capacité du programmeur.

Selon vos observations, vous souhaiterez peut-être :

Surveiller les évictions de pods de nœuds de calcul

L'éviction de pods peut se produire lorsqu'un pod spécifique du cluster de votre environnement atteint ses limites de ressources.

Graphique des évictions de pods de nœuds de calcul
Figure 3. Graphique des évictions de pods de nœuds de calcul (cliquez pour agrandir)

Si un pod de nœud de calcul Airflow est évincé, toutes les instances de tâche qui y sont exécutées sont interrompues, puis marquées comme ayant échoué par Airflow.

La majorité des problèmes d'éviction de pods de nœuds de calcul se produisent en raison de mémoire insuffisante.

Dans la section Nœuds de calcul du tableau de bord Monitoring, observez les graphiques évictions de pods de nœuds de calcul pour votre environnement.

Le graphique Utilisation totale de mémoire des nœuds de calcul indique la perspective totale pour l'environnement. Un seul nœud de calcul peut toujours dépasser la limite de mémoire, même si l'utilisation de mémoire est acceptable au niveau de l'environnement.

Selon vos observations, vous souhaiterez peut-être :

Surveiller les nœuds de calcul actifs

Le nombre de nœuds de calcul dans votre environnement évolue automatiquement en réponse au nombre de tâches en file d'attente.

Graphiques des nœuds de calcul actifs et des tâches en file d'attente
Figure 4. Graphiques des nœuds de calcul actifs et des tâches en file d'attente (cliquez pour agrandir)

Dans la section Nœuds de calcul du tableau de bord Monitoring, observez les graphiques correspondant au nombre de nœuds de calcul actifs et au nombre de tâches dans la file d'attente :

  • Nœuds de calcul actifs
  • Tâches Airflow

Ajustez-les en fonction de vos observations :

  • Si l'environnement atteint fréquemment sa limite maximale de nœuds de calcul et que, dans le même temps, le nombre de tâches dans la file d'attente Celery est élevé en continu, vous pouvez augmenter le nombre maximal de nœuds de calcul.
  • S'il y a de longs délais de planification entre les tâches, mais que l'environnement n'évolue pas jusqu'à atteindre le nombre maximal de nœuds de calcul, il est probable qu'un paramètre Airflow limite la fréquence d'exécution et empêche les mécanismes de Cloud Composer de procéder au scaling de l'environnement. Étant donné que les environnements Cloud Composer 2 évoluent en fonction du nombre de tâches présentes dans la file d'attente Celery, configurez Airflow pour qu'il ne limite pas les tâches transférées dans la file d'attente:

    • Augmentez la simultanéité des nœuds de calcul. La simultanéité des nœuds de calcul doit être définie sur une valeur supérieure au nombre maximal attendu de tâches simultanées, divisé par le nombre maximal de nœuds de calcul dans l'environnement.
    • Augmentez la simultanéité DAG si un seul DAG exécute un grand nombre de tâches en parallèle, ce qui augmente le risque d'atteindre le nombre maximal d'instances de tâche en cours d'exécution par DAG.
    • Augmentez le nombre maximal d'exécutions actives par DAG si vous exécutez plusieurs fois le même DAG en parallèle, ce qui risque de limiter l'exécution d'Airflow si le nombre maximal d'exécutions actives par DAG est atteint.

Surveiller l'utilisation de processeur et de mémoire des nœuds de calcul

Surveillez l'utilisation totale de processeur et de mémoire de tous les nœuds de calcul de votre environnement pour déterminer si ceux-ci utilisent correctement les ressources de votre environnement.

Graphiques de processeur et de mémoire des nœuds de calcul
Figure 5. Graphiques de processeur et de mémoire des nœuds de calcul (cliquez pour agrandir)

Dans la section Nœuds de calcul du tableau de bord Monitoring, observez les graphiques d'utilisation de processeur et de mémoire des nœuds de calcul Airflow :

  • Utilisation totale du processeur pour les nœuds de calcul
  • Utilisation totale de la mémoire pour les nœuds de calcul

Ce graphique représente l'utilisation agrégée des ressources. Même si la vue globale affiche de la capacité supplémentaire, il reste possible que les nœuds de calcul individuels atteignent leurs limites de capacité.

Ajustez-les en fonction de vos observations :

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

Vous pouvez surveiller le nombre de tâches en file d'attente et en cours d'exécution pour vérifier l'efficacité du processus de planification.

Graphique des tâches en cours et en file d'attente
Figure 6. Graphique des tâches en cours d'exécution et en file d'attente (cliquez pour agrandir)

Dans la section Nœuds de calcul du tableau de bord Monitoring, observez le graphique Tâches Airflow correspondant à votre environnement.

Les tâches en file d'attente attendent d'être exécutées par les nœuds de calcul. Si des tâches sont en file d'attente dans votre environnement, cela peut signifier que les nœuds de calcul de votre environnement sont occupés à exécuter d'autres tâches.

La file d'attente est toujours sollicitée dans un environnement, tout particulièrement pendant les pics de traitement. Toutefois, si vous observez un nombre élevé de tâches en file d'attente ou une tendance croissante dans le graphique, cela peut indiquer que les nœuds de calcul ne disposent pas d'une capacité suffisante pour traiter les tâches, ou qu'Airflow limite exécution de tâches.

Un nombre élevé de tâches en file d'attente est généralement observé lorsque le nombre de tâches en cours d'exécution atteint également le niveau maximal.

Pour résoudre ces deux problèmes :

Surveiller l'utilisation de processeur et de mémoire de la base de données

Les problèmes de performances de la base de données Airflow peuvent entraîner des problèmes d'exécution globale du DAG. L'utilisation du disque de base de données n'est généralement pas une préoccupation, car l'espace de stockage est automatiquement étendu si nécessaire.

Graphiques de mémoire et de processeur de la base de données
Figure 7. Graphiques de processeur et de mémoire de la base de données (cliquez pour agrandir)

Dans la section Nœuds de calcul du tableau de bord Monitoring, observez les graphiques concernant l'utilisation de processeur et de mémoire par la base de données Airflow :

  • Utilisation du processeur de la base de données
  • Utilisation de la mémoire de la base de données

Si l'utilisation de processeur de la base de données dépasse 80 % pendant plus de quelques points de pourcentage du temps total, la base de données est surchargée et nécessite un scaling.

Les paramètres de taille de la base de données sont contrôlés par la propriété de taille d'environnement de votre environnement. Pour effectuer un scaling de la base de données à la hausse ou à la baisse, modifiez la taille de l'environnement pour choisir un autre niveau ("Small, "Medium" ou "Large"). L'augmentation de la taille de l'environnement augmente les coûts associés à votre environnement.

Surveiller la latence de planification des tâches

Si la latence entre les tâches dépasse les niveaux attendus (par exemple, 20 secondes ou plus), cela peut indiquer que l'environnement ne peut pas gérer la charge de tâches générées par les exécutions de DAG.

Graphique de latence des tâches (interface utilisateur Airflow)
Figure 8. Graphique de latence des tâches, interface utilisateur d'Airflow (cliquez pour agrandir)

Vous pouvez afficher le graphique de latence de planification des tâches dans l'interface utilisateur Airflow de votre environnement.

Dans cet exemple, les retards (2,5 et 3,5 secondes) sont bien dans les limites acceptables, mais les latences beaucoup plus élevées peuvent indiquer que :

Surveiller l'utilisation de processeur et de mémoire du serveur Web

Les performances du serveur Web Airflow affectent l'interface utilisateur Airflow. Il n'est pas courant que le serveur Web soit surchargé. Dans une telle situation, les performances de l'interface utilisateur Airflow peuvent se dégrader, mais cela n'affecte pas les performances des exécutions DAG.

Graphiques de processeur et de mémoire du serveur Web
Figure 9. Graphiques de processeur et de mémoire du serveur Web (cliquez pour agrandir)

Dans la section Serveur Web du tableau de bord Monitoring, observez les graphiques du serveur Web Airflow :

  • Utilisation du processeur du serveur Web
  • Utilisation de la mémoire du serveur Web

D'après vos observations :

Ajuster les paramètres d'évolutivité et de performances de l'environnement

Modifier le nombre de programmeurs

Ajuster le nombre de programmeurs permet d'améliorer la capacité et la résilience du programmeur de planification Airflow.

L'augmentation du nombre de programmeurs augmente le trafic à destination et en provenance de la base de données Airflow. Dans la plupart des scénarios, nous vous recommandons d'utiliser deux programmeurs Airflow. L'utilisation de plus de deux planificateurs n'est requise que dans les rares cas nécessitant des considérations particulières.

Si vous avez besoin d'une planification plus rapide:

Exemples :

Console

Suivez les étapes décrites dans la section Ajuster le nombre de programmeurs pour définir le nombre requis de programmeurs pour votre environnement.

gcloud

Suivez les étapes décrites dans la section Ajuster le nombre de programmeurs pour définir le nombre requis de programmeurs pour votre environnement.

L'exemple suivant définit le nombre de programmeurs sur deux :

gcloud composer environments update example-environment \
    --scheduler-count=2

Terraform

Suivez les étapes décrites dans la section Ajuster le nombre de programmeurs pour définir le nombre requis de programmeurs pour votre environnement.

L'exemple suivant définit le nombre de programmeurs sur deux :

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    workloads_config {
      scheduler {
        count = 2
      }
    }
  }
}

Modifier l'allocation de processeur et de mémoire des programmeurs

Les paramètres de processeur et de mémoire s'appliquent à chaque programmeur de votre environnement. Par exemple, si votre environnement dispose de deux programmeurs, la capacité totale est deux fois supérieure aux quantités de processeur et de mémoire spécifiées.

Console

Suivez les étapes décrites dans la section Ajuster les paramètres de scaling et de performances des nœuds de calcul, du programmeur et du serveur Web pour définir l'allocation de processeur et de mémoire des programmeurs.

gcloud

Suivez les étapes décrites dans la section Ajuster les paramètres de scaling et de performances des nœuds de calcul, du programmeur et du serveur Web pour définir l'allocation de processeur et de mémoire des programmeurs.

L'exemple suivant modifie l'allocation de processeur et de mémoire des programmeurs. Vous pouvez spécifier uniquement des attributs de processeur ou de mémoire, selon les besoins.

gcloud composer environments update example-environment \
  --scheduler-cpu=0.5 \
  --scheduler-memory=3.75

Terraform

Suivez les étapes décrites dans la section Ajuster les paramètres de scaling et de performances des nœuds de calcul, du programmeur et du serveur Web pour définir l'allocation de processeur et de mémoire des programmeurs.

L'exemple suivant modifie l'allocation de processeur et de mémoire des programmeurs. Vous pouvez omettre les attributs de processeur ou de mémoire, le cas échéant.

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    workloads_config {
      scheduler {
        cpu = "0.5"
        memory_gb = "3.75"
      }
    }
  }
}

Modifier le nombre maximal de nœuds de calcul

L'augmentation du nombre maximal de nœuds de calcul permet à votre environnement d'évoluer automatiquement vers un nombre plus élevé de nœuds de calcul, si nécessaire.

La réduction du nombre maximal de nœuds de calcul réduit la capacité maximale de l'environnement, mais peut également être utile pour réduire les coûts de l'environnement.

Exemples :

Console

Suivez les étapes de la section Ajuster le nombre minimal et maximal de nœuds de calcul pour définir le nombre maximal de nœuds de calcul requis pour votre environnement.

gcloud

Suivez les étapes de la section Ajuster le nombre minimal et maximal de nœuds de calcul pour définir le nombre maximal de nœuds de calcul requis pour votre environnement.

L'exemple suivant définit le nombre maximal de nœuds de calcul sur six :

gcloud composer environments update example-environment \
    --max-workers=6

Terraform

Suivez les étapes de la section Ajuster le nombre minimal et maximal de nœuds de calcul pour définir le nombre maximal de nœuds de calcul requis pour votre environnement.

L'exemple suivant définit le nombre maximal de programmeurs sur six :

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    workloads_config {
      worker {
        max_count = "6"
      }
    }
  }
}

Modifier l'allocation de processeur et de mémoire des nœuds de calcul

  • La réduction de l'allocation de mémoire des nœuds de calcul peut être utile lorsque le graphique d'utilisation des nœuds de calcul indique une utilisation de mémoire très faible.

  • L'augmentation de l'allocation de mémoire des nœuds de calcul permet aux nœuds de calcul de gérer plus de tâches simultanément ou de gérer des tâches qui utilisent beaucoup de mémoire. Cela peut résoudre le problème des évictions de pods de nœuds de calcul.

  • La réduction de l'allocation de processeur des nœuds de calcul peut être utile lorsque le graphique d'utilisation du processeur de nœud de calcul indique que les ressources de processeur sont surprovisionnées.

  • L'augmentation de l'allocation de processeur des nœuds de calcul permet aux nœuds de calcul de gérer davantage de tâches simultanément et, dans certains cas, de réduire le temps nécessaire à leur traitement.

La modification des allocations de processeur ou de mémoire des nœuds de calcul redémarre les nœuds de calcul, ce qui peut affecter les tâches en cours d'exécution. Nous vous recommandons de procéder à de telles modifications lorsqu'aucun DAG n'est en cours d'exécution.

Les paramètres de processeur et de mémoire sont propres à chaque nœud de calcul de votre environnement. Par exemple, si votre environnement dispose de quatre nœuds de calcul, la capacité totale est quatre fois supérieure aux quantités de processeur et de mémoire spécifiées.

Console

Suivez les étapes décrites dans la section Ajuster les paramètres de scaling et de performances des nœuds de calcul, du programmeur et du serveur Web pour définir l'allocation de processeur et de mémoire des nœuds de calcul.

gcloud

Suivez les étapes décrites dans la section Ajuster les paramètres de scaling et de performances des nœuds de calcul, du programmeur et du serveur Web pour définir l'allocation de processeur et de mémoire des nœuds de calcul.

L'exemple suivant modifie l'allocation de processeur et de mémoire pour les nœuds de calcul. Vous pouvez omettre l'attribut de processeur ou de mémoire, le cas échéant.

gcloud composer environments update example-environment \
  --worker-memory=3.75 \
  --worker-cpu=2

Terraform

Suivez les étapes décrites dans la section Ajuster les paramètres de scaling et de performances des nœuds de calcul, du programmeur et du serveur Web pour définir l'allocation de processeur et de mémoire des nœuds de calcul.

L'exemple suivant modifie l'allocation de processeur et de mémoire pour les nœuds de calcul. Vous pouvez omettre le paramètre de processeur ou de mémoire, le cas échéant.

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    workloads_config {
      worker {
        cpu = "2"
        memory_gb = "3.75"
      }
    }
  }
}

Modifier l'allocation de processeur et de mémoire du serveur Web

Il peut être utile de réduire l'allocation de processeur ou de mémoire du serveur Web lorsque le graphique d'utilisation du serveur Web indique qu'il est continuellement sous-utilisé.

La modification des paramètres du serveur Web a pour effet de redémarrer le serveur Web, ce qui entraîne un temps d'arrêt temporaire. Nous vous recommandons d'apporter des modifications en dehors des heures d'utilisation normales.

Console

Suivez les étapes décrites dans la section Ajuster les paramètres de scaling et de performances des nœuds de calcul, du programmeur et du serveur Web pour définir l'allocation de processeur et de mémoire du serveur Web.

gcloud

Suivez les étapes décrites dans la section Ajuster les paramètres de scaling et de performances des nœuds de calcul, du programmeur et du serveur Web pour définir l'allocation de processeur et de mémoire du serveur Web.

L'exemple suivant modifie l'allocation de processeur et de mémoire du serveur Web. Vous pouvez omettre les attributs de processeur ou de mémoire, le cas échéant.

gcloud composer environments update example-environment \
    --web-server-cpu=2 \
    --web-server-memory=3.75

Terraform

Suivez les étapes décrites dans la section Ajuster les paramètres de scaling et de performances des nœuds de calcul, du programmeur et du serveur Web pour définir l'allocation de processeur et de mémoire du serveur Web.

L'exemple suivant modifie l'allocation de processeur et de mémoire du serveur Web. Vous pouvez omettre les attributs de processeur ou de mémoire, le cas échéant.

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    workloads_config {
      web_server {
        cpu = "2"
        memory_gb = "3.75"
      }
    }
  }
}

Modifier la taille de l'environnement

La modification de la taille de l'environnement modifie la capacité des composants de backend Cloud Composer tels que la base de données Airflow et la file d'attente Airflow.

  • Envisagez de réduire la taille de l'environnement (par exemple, de "Large" à "Medium" ou de "Medium" à "Small") lorsque les métriques d'utilisation de la base de données indiquent une sous-utilisation importante.
  • Pensez à augmenter la taille de l'environnement si vous remarquez une utilisation élevée de la base de données Airflow.

Console

Suivez les étapes de la section Ajuster la taille de l'environnement pour définir la taille de l'environnement.

gcloud

Suivez les étapes de la section Ajuster la taille de l'environnement pour définir la taille de l'environnement.

L'exemple suivant modifie la taille de l'environnement pour passer à "Medium".

gcloud composer environments update example-environment \
    --environment-size=medium

Terraform

Suivez les étapes de la section Ajuster la taille de l'environnement pour définir la taille de l'environnement.

L'exemple suivant modifie la taille de l'environnement pour passer à "Medium".

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    environment_size = "medium"
  }
}

Modifier l'intervalle de référencement des dossiers DAG

L'augmentation de l'intervalle de référencement des dossiers DAG réduit la charge de programmeur associée à la découverte des nouveaux DAG dans le bucket d'environnement.

  • Envisagez d'augmenter cet intervalle si vous déployez rarement de nouveaux DAG.
  • Envisagez de réduire cet intervalle si vous souhaitez qu'Airflow réagisse plus rapidement aux fichiers DAG nouvellement déployés.

Pour modifier ce paramètre, remplacez l'option de configuration Airflow suivante :

Section Clé Valeur Notes
scheduler dag_dir_list_interval Nouvelle valeur pour l'intervalle de référencement La valeur par défaut, en secondes, est 120.

Modifier l'intervalle d'analyse du fichier DAG

L'augmentation de l'intervalle d'analyse des fichiers DAG réduit la charge de programmeur associée à l'analyse continue des DAG.

Pensez à augmenter cet intervalle lorsque vous disposez d'un grand nombre de DAG qui ne changent pas souvent ou que vous observez une charge de programmeur élevée en général.

Pour modifier ce paramètre, remplacez l'option de configuration Airflow suivante :

Section Clé Valeur Notes
scheduler min_file_process_interval Nouvelle valeur pour l'intervalle d'analyse des fichiers DAG La valeur par défaut, en secondes, est 30.

Simultanéité des nœuds de calcul

Les performances de simultanéité et la capacité d'autoscaling de votre environnement sont liées à deux paramètres:

  • le nombre minimal de nœuds de calcul Airflow
  • Le paramètre [celery]worker_concurrency

Les valeurs par défaut fournies par Cloud Composer sont optimales pour la plupart des cas d'utilisation, mais votre environnement peut bénéficier d'ajustements personnalisés.

Considérations sur les performances de simultanéité des nœuds de calcul

Le paramètre [celery]worker_concurrency définit le nombre de tâches qu'un seul nœud de calcul peut récupérer dans la file d'attente. La vitesse d'exécution d'une tâche dépend de plusieurs facteurs, tels que le processeur de nœud de calcul, la mémoire et le type de tâche elle-même.

Autoscaling des nœuds de calcul

Cloud Composer surveille la file d'attente de tâches et génère des nœuds de calcul supplémentaires pour récupérer les tâches en attente. Définir [celery]worker_concurrency sur une valeur élevée signifie que chaque nœud de calcul peut récupérer un grand nombre de tâches. Par conséquent, dans certaines circonstances, la file d'attente peut ne jamais se remplir, empêchant ainsi l'autoscaling de se déclencher.

Par exemple, dans un environnement Cloud Composer comportant deux nœuds de calcul Airflow, [celery]worker_concurrency défini sur 100 et les tâches 200 dans la file d'attente, chaque nœud de calcul récupère 100 tâches. La file d'attente reste vide et ne déclenche pas d'autoscaling. Si ces tâches prennent beaucoup de temps, cela peut entraîner des problèmes de performances.

Toutefois, si les tâches sont petites et rapides à exécuter, une valeur élevée dans le paramètre [celery]worker_concurrency peut entraîner un scaling excessif. Par exemple, si cet environnement comporte 300 tâches dans la file d'attente, Cloud Composer commence à créer des nœuds de calcul. Toutefois, si les 200 premières tâches se terminent lorsque les nouveaux nœuds de calcul sont prêts, un nœud de calcul existant peut les récupérer. Au final, l'autoscaling crée des nœuds de calcul, mais aucune tâche ne leur est associée.

Pour les cas particuliers, l'ajustement de [celery]worker_concurrency doit être basé sur les heures de pointe d'exécution des tâches et sur les nombres de files d'attente:

  • Pour les tâches qui prennent plus de temps, les nœuds de calcul ne doivent pas pouvoir vider complètement la file d'attente.
  • Pour des tâches plus rapides et de petite taille, augmentez le nombre minimal de nœuds de calcul Airflow afin d'éviter un scaling excessif.

Synchronisation des journaux de tâches

Les nœuds de calcul Airflow comportent un composant qui synchronise les journaux d'exécution des tâches avec des buckets Cloud Storage. Un nombre élevé de tâches simultanées effectuées par un seul nœud de calcul entraîne un nombre élevé de requêtes de synchronisation. Cela peut surcharger votre nœud de calcul et entraîner des problèmes de performances.

Si vous constatez des problèmes de performances dus à un volume élevé de trafic de synchronisation des journaux, réduisez les valeurs [celery]worker_concurrency et ajustez le nombre minimal de nœuds de calcul Airflow.

Modifier la simultanéité des nœuds de calcul

La modification de ce paramètre ajuste le nombre de tâches qu'un seul nœud de calcul peut exécuter simultanément.

Par exemple, un nœud de calcul disposant de 0,5 processeur peut généralement gérer six tâches simultanées. Un environnement comprenant trois nœuds de calcul peut gérer jusqu'à 18 tâches simultanées.

  • Augmentez ce paramètre lorsque des tâches sont en attente dans la file d'attente alors que vos nœuds de calcul utilisent un faible pourcentage de leurs allocations de processeur et de mémoire.

  • Diminuez ce paramètre lorsque vous subissez des évictions de pods. Cela réduira le nombre de tâches qu'un seul nœud de calcul tente de traiter simultanément. Vous pouvez également augmenter l'allocation de mémoire des nœuds de calcul.

La valeur par défaut pour la simultanéité des nœuds de calcul est la suivante:

  • Dans Airflow 2.6.3 et versions ultérieures, une valeur minimale de 32, 12 * worker_CPU et 6 * worker_memory.
  • Dans les versions Airflow antérieures à la version 2.6.3, une valeur minimale de 32, 12 * worker_CPU et 8 * worker_memory.
  • Dans les versions Airflow antérieures à la version 2.3.3, 12 * worker_CPU.

La valeur worker_CPU correspond au nombre de processeurs alloués à un seul nœud de calcul. La valeur worker_memory correspond à la quantité de mémoire allouée à un seul nœud de calcul. Par exemple, si des nœuds de calcul de votre environnement utilisent chacun 0,5 processeur et 4 Go de mémoire, leur simultanéité est définie sur 6. La valeur de simultanéité des nœuds de calcul ne dépend pas du nombre de nœuds de calcul dans votre environnement.

Pour modifier ce paramètre, remplacez l'option de configuration Airflow suivante :

Section Clé Valeur
celery worker_concurrency Nouvelle valeur pour la simultanéité des nœuds de calcul

Modifier la simultanéité DAG

La simultanéité DAG définit le nombre maximal d'instances de tâche autorisées à s'exécuter simultanément dans chaque DAG. Augmentez cette valeur lorsque vos DAG exécutent un grand nombre de tâches simultanées. Si ce paramètre est faible, le programmeur met plus de tâches à la file d'attente, ce qui réduit également l'efficacité de l'autoscaling de l'environnement.

Pour modifier ce paramètre, remplacez l'option de configuration Airflow suivante :

Section Clé Valeur Notes
core max_active_tasks_per_dag Nouvelle valeur pour la simultanéité DAG La valeur par défaut est 16.

Augmenter le nombre maximal d'exécutions actives par DAG

Cet attribut définit le nombre maximal d'exécutions DAG actives pour chaque DAG. Lorsque le même DAG doit être exécuté plusieurs fois simultanément, par exemple avec des arguments d'entrée différents, cet attribut permet au programmeur de démarrer de telles exécutions en parallèle.

Pour modifier ce paramètre, remplacez l'option de configuration Airflow suivante :

Section Clé Valeur Notes
core max_active_runs_per_dag Nouvelle valeur pour le nombre maximal d'exécutions actives par DAG La valeur par défaut est 25.

Étapes suivantes