Priorité du flux

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 5 minutes de lecture
  • Spécifiez la priorité que vous souhaitez donner à un flux en arrière-plan par rapport aux autres flux en attente d'exécution. Exécutez un groupe de flux de priorité supérieure avant d’exécuter des flux de priorité inférieure.

    Vous ne pouvez définir une priorité de flux que pour les flux qui s’exécutent en arrière-plan. Les flux en arrière-plan s’exécutent à partir du prochain thread de travail disponible. Par défaut, Concepteur de flux peut utiliser jusqu’à la moitié des threads de travail disponibles pour exécuter des flux en arrière-plan. Si aucun thread de travail n’est disponible pour exécuter un flux, le flux est mis en file d’attente jusqu’à ce qu’un thread de travail soit disponible pour l’exécuter.

    Vous pouvez définir les flux en arrière-plan pour qu’ils aient l’une de ces valeurs de priorité.
    • Élevée
    • Moyenne
    • Faible
    Par défaut, les flux en arrière-plan s’exécutent avec une priorité moyenne.
    Remarque :
    Les flux qui s’exécutent au premier plan s’exécutent dans le thread actuel et n’utilisent pas la priorité de flux pour déterminer l’ordre d’exécution.

    La définition d’une priorité de flux détermine l’ordre dans lequel les threads de travail sélectionnent les flux dans la file d’attente. Les threads de travail exécutent plusieurs flux de priorité supérieure avant d’exécuter un flux de priorité inférieure. Ce schéma de priorité garantit l’exécution de certains flux de priorité inférieure, même lorsqu’il existe des flux de priorité supérieure dans la file d’attente. Lorsqu’il y a une grande file d’attente de travail à exécuter, la plupart des flux de priorité basse doivent attendre jusqu’à ce que les flux de priorité élevée soient exécutés. Une fois les flux de priorité élevée exécutés, les threads de travail peuvent exécuter des flux de priorité inférieure.

    Si un flux reste dans la file d’attente pendant plus de cinq minutes, le système délègue le flux à un autre nœud pour exécution. Lorsqu’un flux est délégué à un autre nœud, il perd sa valeur de priorité. Un nœud délégué extrait les flux de la file d’attente d’événements dans l’ordre chronologique. Le nœud délégué exécute d’abord les flux les plus anciens, puis exécute les flux les plus récents. En règle générale, déléguer des flux à exécuter à partir d’un autre nœud se produit uniquement lorsque tous les threads de travail disponibles sur un nœud sont occupés.
    Remarque :
    Les threads de travail exécutent tous les événements système, pas seulement les événements de flux.

    Les flux perdent également leur valeur de priorité lorsqu’ils sont mis en pause pour une raison quelconque. Les flux qui reprennent après une pause s’exécutent avec la priorité moyenne par défaut. Par exemple, un flux peut commencer à s’exécuter avec une priorité élevée, puis s’interrompre pour attendre pendant un certain temps. Lorsque le flux reprend son exécution, il s’exécute avec une priorité moyenne.

    Mise en pause automatique des flux de faible priorité

    Par défaut, le système recherche les tickets où des flux de priorité élevée sont bloqués par l’exécution de flux de priorité inférieure. Chaque fois qu’une priorité basse s’exécute pendant plus de deux minutes, le système vérifie si des flux de priorité supérieure ont été exécutés au cours des cinq dernières minutes. Si aucun flux de priorité élevée ne s’est exécuté récemment, le système vérifie le nombre de flux en attente d’exécution dans la file d’attente des événements. S’il existe un backlog d’au moins 100 flux de priorité haute en attente d’exécution dans la file d’attente d’événements, le système met en pause le flux de priorité basse en cours d’exécution. La mise en pause d’un flux préserve son contexte et ses données. Un flux en pause retourne à la file d’attente d’événements pour s’exécuter lorsqu’un worker est disponible pour le traiter.

    Si vos flux de priorité basse ne s’exécutent pas comme prévu, passez en revue le nombre de flux de priorité élevée que votre système génère et exécute. Consultez les considérations relatives à la conception pour savoir quand définir un flux sur une priorité élevée ou faible. Si vos flux de faible priorité ne sont toujours pas en cours d’exécution, vous pouvez désactiver la mise en pause des flux de faible priorité avec une propriété système. Consultez Propriétés système de Concepteur de flux pour modifier la valeur de la propriété com.glide.hub.pause_low_priority_flows_enabled.

    Prise en charge rapide de l’API

    La méthode d’API rapide ne prend pas en charge les valeurs de priorité de flux. Les flux exécutés par la méthode d’API rapide ignorent les paramètres de priorité de flux définis précédemment et s’exécutent à la place avec une priorité moyenne.

    Considérations relatives à la conception

    Tenez compte de ces considérations de conception lors de la définition de la priorité du flux.

    Évitez de définir tous les flux pour qu’ils s’exécutent à une priorité élevée
    Utilisez une combinaison de priorités plutôt que de définir tous les flux sur une priorité élevée. Les threads de travail utilisent la priorité relative entre les flux pour sélectionner le travail. Si tous vos flux s’exécutent avec une priorité élevée, il n’y a aucun flux de priorité inférieure à faire attendre.
    Évitez de définir la priorité des flux qui doivent être mis en pause
    Conservez les flux qui doivent être mis en pause à la priorité moyenne par défaut, car un flux qui s’interrompt perd sa valeur de priorité lorsqu’il reprend son exécution.
    Utiliser une priorité élevée pour les flux critiques pour l’activité
    Limitez la priorité élevée aux flux ayant une valeur commerciale élevée, s’exécutant rarement et ayant une courte durée d’exécution. Évitez de définir des flux de volumes élevés sur une priorité élevée, car cela limite le nombre de threads de travail disponibles pour exécuter d’autres flux. Un flux de priorité élevée de longue durée peut également réduire le nombre de threads de travail disponibles pour exécuter d’autres flux.
    Utiliser une priorité basse pour les flux à volume élevé
    Exécuter des flux de volume élevé avec une priorité faible afin que d’autres flux sensibles au facteur temps puissent s’exécuter en premier. Les flux de faible priorité ne doivent pas être sensibles au facteur temps.
    Utiliser une priorité moyenne pour les flux sensibles au facteur temps
    Utilisez la priorité de flux par défaut lorsqu’un flux présente une certaine urgence temporelle par rapport à d’autres flux.