Implémentation de la limitation des hôtes par BizTalk Server
Le mécanisme de limitation de l’hôte BizTalk Server surveille continuellement une condition de limitation, calcule la gravité de la condition de limitation et applique progressivement la limitation de l’hôte en fonction de la gravité calculée. Le mécanisme de limitation est le réglage automatique et les options de configuration par défaut conviennent à la majorité des scénarios de traitement BizTalk Server. BizTalk Server limitation de l’hôte expose plusieurs options configurables qui peuvent être utilisées pour régler la limitation pour des scénarios spécifiques. Pour plus d’informations sur la modification de ces options de configuration, consultez Comment modifier les paramètres de l’hôte.
Composants de l'algorithme de limitation des hôtes
BizTalk Server utilise l’algorithme suivant lors de l’application de la limitation de l’hôte :
Surveille en permanence les paramètres pour vérifier qu'ils ne dépassent pas certains seuils. Si les valeurs du paramètre dépassent le seuil qui lui est associé, cela signifie qu'une condition de limitation existe.
Quantité de mémoire en cours d'utilisation (à la fois la mémoire du système et la mémoire de processus de l'hôte).
Nombre de messages en cours de remise ou de traitement (seuil pour la limitation des sorties).
Nombre de threads en cours d'utilisation.
Taille de la base de données, mesurée par le nombre d'éléments dans les tables de file d'attente pour tous les hôtes et le nombre d'éléments dans les tables du spouleur et de suivi.
Nombre de connexions simultanées à la base de données.
Fréquence de publication des messages (entrants) et de remise ou de traitement des messages (sortants).
Détermine la gravité de la condition de limitation. Les conditions de limitation sont classées par gravité comme ceci (par ordre de gravité décroissant).
La mémoire de processus de l'hôte en cours d'utilisation dépasse le seuil.
Le nombre de messages en cours de traitement dépasse le seuil.
Le nombre de threads en cours d'utilisation dépasse le seuil.
La taille de la base de données dépasse le seuil.
Toutes les autres conditions de limitation.
Applique progressivement la limitation en fonction de la gravité de la ou des conditions. Plus le niveau de gravité de la condition augmente, plus la limitation est appliquée de manière agressive. La limitation progressive est effectuée de la manière suivante :
Une ou plusieurs conditions de limitation sont détectées et se voient affecter un niveau de gravité.
Une instruction de mise en œuvre de la limitation est émise en fonction de la condition ayant le niveau de gravité le plus élevé. En fonction de la condition de limitation, si la condition persiste, la taille des diverses réserves de threads peut être réduite et de la mémoire peut être libérée en mettant en attente des orchestrations en cours d'exécution.
Un délai est appliqué à la publication ou au traitement du message, selon qu'il s'agit d'un message entrant ou sortant. La durée du délai est proportionnelle à la gravité de la condition de limitation. Ainsi, plus le niveau de gravité des conditions est élevé, plus la période de limitation est longue. La durée du délai est ajustée à la baisse ou à la hausse dans la limite de plages par le mécanisme de limitation au fur et à mesure que les conditions évoluent. La période de délai actuelle est exposée via les compteurs de performances Délai de remise des messages (ms) et délai de publication des messages (ms) associés à la catégorie d’objets de performance BizTalk :Message Agent . Ces compteurs d’objets de performances sont documentés dans la rubrique Compteurs de performances de limitation de l’hôte.
Le mécanisme de limitation continue de vérifier la présence d'une condition de limitation. Si les conditions de limitation sont réduites, les messages limités par le mécanisme sont débloqués, la réserve de threads et d'autres ressources sont autorisées à fonctionner en mode non restreint. Si le système continue de fonctionner sans condition de limitation, la durée du délai est sensiblement réduite. Dans le cas contraire, la durée du délai est augmentée en fonction de la gravité de la condition et les messages suivants sont soumis à un délai plus long.
La limitation n'est plus appliquée lorsque le délai est écoulé.
Types de conditions de limitation
Il existe trois principaux types de conditions de limitation : basé sur le taux, basé sur les ressources et orchestration.
La limitation basée sur le taux est divisée en deux catégories : entrant (publié) et sortant (remis) :
Pour les messages entrants (publiés), BizTalk Server limite la publication des messages si le taux entrant de publication de message pour l’hôte instance dépasse le taux de publication de messages\* la valeur spécifiée du facteur d’overdrive de taux (pourcentage). Le paramètre Taux de facteur d’overdrive (pourcentage) est configurable dans la boîte de dialogue Paramètres de limitation de la publication de messages. La limitation basée sur la fréquence des messages entrants est réalisée en induisant un délai avant de publier le lot de messages dans la base de données MessageBox. Aucune autre action n'est prise pour mettre en œuvre la limitation basée sur la fréquence des messages entrants.
Pour les messages sortants (remis), BizTalk Server limite la remise des messages si le taux entrant de remise de messages pour l’hôte instance dépasse le taux de remise de messages * la valeur du facteur d’overdrive de taux (pourcentage) spécifiée. Le paramètre Taux de facteur d’overdrive (pourcentage) est configurable dans la boîte de dialogue Paramètres de limitation du traitement des messages. La limitation basée sur la fréquence des messages sortants est réalisée en induisant un délai avant de supprimer les messages dans la file d'attente en mémoire et de les remettre au Gestionnaire des points de terminaison ou du moteur d'orchestration pour leur traitement. Aucune autre action n'est prise pour mettre en œuvre la limitation basée sur la fréquence des messages sortants.
Pour plus d’informations sur le facteur d’overdrive de débit et d’autres valeurs de limitation basées sur le taux, consultez Comment modifier les paramètres de limitation basés sur le taux.
La limitation basée sur les ressources surveille les ressources système telles que les threads, la mémoire et la taille de base de données et peut être appliquée à n’importe quelle classe de service. Pour plus d’informations sur les valeurs de limitation basées sur les ressources, consultez Comment modifier les paramètres de limitation basés sur les ressources.
La limitation de l’orchestration peut empêcher la déshydratation et quand suspendre/reprendre les abonnements. Pour plus d’informations sur les valeurs de limitation d’orchestration, consultez Comment modifier les paramètres de limitation d’orchestration.
Déclencheurs, actions et stratégies de réduction des conditions de limitations
Cette section décrit les déclencheurs des diverses conditions de limitation, les actions prises par le mécanisme de limitation et les techniques qui peuvent être employées pour réduire la condition de limitation.
Limitation au niveau des entrées
Le mécanisme de limitation BizTalk applique une limitation au niveau des entrées au moteur d'orchestration (XLANG) et des adaptateurs entrants.
Utilisez les compteurs d’état de limitation de publication de message et de durée d’état de limitation de publication de message associés à l’objet de performance BizTalk :MessageAgent pour mesurer l’état de limitation actuel et la durée de limitation. Pour plus d’informations sur les compteurs de performances de limitation de l’hôte disponibles, consultez Compteurs de performances de limitation de l’hôte.
La limitation au niveau des entrées peut engendrer une accumulation des messages entrants à la source. Si elle est appliquée à un adaptateur de réception, cet adaptateur risque d'arrêter de recevoir des messages jusqu'à ce que la condition de limitation soit réduite.
Publication des messages État de limitation |
Déclencheur de la condition de limitation | Actions de limitation prises | Stratégie d’atténuation | Objet de performance | Compteur de performances |
---|---|---|---|---|---|
2 | Le taux entrant de publication de messages pour l’hôte instance dépasse le taux sortant de publication de messages\* la valeur du facteur d’overdrive de taux spécifié (pourcentage). La base de données ne parvient pas à suivre la vitesse de publication. | Bloquez le thread de publication pendant une période calculée dynamiquement jusqu’à ce que le taux entrant de publication de messages soit égal au taux de publication de messages * la valeur du facteur d’overdrive de taux spécifié (pourcentage). | Utilisez des compteurs de performance pour déterminer la vitesse d'entrée et de sortie de publication des messages. Utilisez un facteur de dépassement adapté à votre environnement. Vérifiez que les valeurs fournies pour les paramètres Durée de la fenêtre d’échantillonnage et Nombre minimal d’exemples sont appropriées pour votre scénario. Pour plus d’informations sur ces paramètres, consultez How to Modify Rate Based Throttling Settings. |
BizTalk :MessageAgent | Vitesse d'entrée de publication de messages Vitesse de sortie de publication de messages |
4 | La mémoire de processus dépasse le seuil spécifié. Ceci peut se produire lorsque le lot à publier utilise beaucoup de mémoire ou lorsqu'un trop grand nombre de threads sont utilisés pour traiter les messages. |
Réduisez la taille de la réserve de threads utilisée par le Gestionnaire des points de terminaison. Bloquez les threads utilisés par le Gestionnaires des points de terminaison pour empêcher le traitement de nouveaux lots de messages. Si la persistance des messages d'un lot dans la base de données utilise beaucoup de mémoire, le thread de publication est également soumis à un délai progressif avant que les messages ne soient rendus persistants dans la base de données. Le blocage du lot de publication en raison des fortes exigences en mémoire de processus est déterminé en fonction de plusieurs facteurs, notamment le nombre de messages contenus dans le lot ou si le lot comporte des commandes de mise en attente ou de suppression de messages. |
Envisagez de réduire la charge en réduisant la réserve de threads du Gestionnaire des points de terminaison et/ou la taille des lots de l'adaptateur. Si le processus ne consomme pas trop de mémoire, envisagez d’augmenter le seuil virtuel processus pour l’hôte. Pour plus d’informations sur la modification de la valeur virtuelle de processus , consultez Comment modifier les paramètres de limitation basés sur les ressources. |
BizTalk :MessageAgent | Mémoire de processus élevée Utilisation de la mémoire de processus (Mo) Seuil d'utilisation de la mémoire de processus (Mo) |
6 | La taille de la file d'attente des messages de l'hôte, de la table Spool ou de la table de suivi dépasse le seuil spécifié. Les raisons possibles pour cette condition sont les suivantes : - Les travaux SQL Agent utilisés par BizTalk Server pour maintenir les bases de données BizTalk Server qui ne s’exécutent pas ou s’exécutent lentement. - Les composants de flux descendant ne traitent pas les messages de la file d’attente en mémoire en temps opportun. - Le nombre de messages suspendus est élevé. - La charge durable maximale du système a été atteinte. |
Réduisez la taille de la réserve de threads utilisée par le Gestionnaire des points de terminaison. Bloquez les threads utilisés par le Gestionnaires des points de terminaison pour empêcher le traitement de nouveaux lots de messages. Le thread de publication est également soumis à un délai progressif avant que les messages ne soient rendus persistants dans la base de données. |
Vérifiez que les travaux d'Agent SQL utilisés par BizTalk Server pour gérer les bases de données BizTalk Server fonctionnent. Mettez fin aux instances suspendues et reprenez-les, selon les besoins. Augmentez la valeur par défaut du nombre de messages dans le seuil de base de données en tenant compte des besoins en espace du serveur SQL qui héberge les bases de données BizTalk. Si votre base de données est dimensionnée de manière appropriée pour gérer un backlog de messages supplémentaire, envisagez d’augmenter les valeurs du multiplicateur de la spoule et du multiplicateur de données de suivi pour permettre un backlog supplémentaire dans les tables Spool et Tracking. Pour plus d’informations sur la modification des valeurs, consultez Comment modifier les paramètres de limitation basés sur les ressources. |
BizTalk :MessageAgent BizTalk:MessageBox:compteurs généraux BizTalk:MessageBox:compteurs de l'hôte |
Agent des messages/Taille des bases de données BizTalk:MessageBox:compteurs généraux/Taille mise en file d'attente BizTalk:MessageBox:compteurs généraux/Taille données de suivi MessageBox:compteurs de l'hôte/File d'attente hôte - Longueur MessageBox:compteurs de l'hôte/File d'attente hôte - Msgs suspendus - Longueur |
8 | Les sessions de base de données utilisées par l'instance de l'hôte dépassent le seuil spécifié. | Réduisez la taille de la réserve de threads utilisée par le Gestionnaire des points de terminaison. Bloquez les threads utilisés par le Gestionnaires des points de terminaison pour empêcher le traitement de nouveaux lots de messages. Le thread de publication est également soumis à un délai progressif avant que les messages ne soient rendus persistants dans la base de données. |
Envisagez d’augmenter le seuil des connexions de base de données pour l’hôte. Pour plus d’informations sur la modification de cette valeur, consultez Comment modifier les paramètres de limitation basés sur les ressources. |
BizTalk :MessageAgent | Session de base de données |
9 | Le nombre de threads de processus dépasse le seuil spécifié. | Réduisez la taille de la réserve de threads utilisée par le Gestionnaire des points de terminaison. Bloquez les threads utilisés par le Gestionnaires des points de terminaison pour empêcher le traitement de nouveaux lots de messages. Le thread de publication est également soumis à un délai progressif avant que les messages ne soient rendus persistants dans la base de données. |
Envisagez d'ajuster les différentes tailles de réserves de threads pour que le système ne puisse pas créer un grand nombre de threads. Pour plus d’informations sur la modification des tailles de pool de threads, consultez Comment modifier les paramètres généraux et Comment modifier les paramètres de limitation basés sur les ressources. |
BizTalk :MessageAgent | Nombre de threads Seuil de nombre de threads |
5 | La mémoire système dépasse le seuil spécifié. | Réduisez la taille de la réserve de threads utilisée par le Gestionnaire des points de terminaison. Bloquez les threads utilisés par le Gestionnaires des points de terminaison pour empêcher le traitement de nouveaux lots de messages. Si la persistance des messages d'un lot dans la base de données utilise beaucoup de mémoire, le thread de publication est également soumis à un délai progressif avant que les messages ne soient rendus persistants dans la base de données. Le blocage du lot de publication en raison des fortes exigences en mémoire de processus est déterminé en fonction de plusieurs facteurs, notamment le nombre de messages contenus dans le lot ou si le lot comporte des commandes de mise en attente ou de suppression de messages. |
Envisagez de réduire la charge en réduisant la taille par défaut de la réserve de threads du Gestionnaire des points de terminaison et/ou la taille des lots de l'adaptateur. Si le processus ne consomme pas de mémoire excessive, envisagez d’augmenter le seuil physique global pour l’hôte. Pour plus d’informations sur la modification du seuil physique global , consultez Comment modifier les paramètres de limitation basés sur les ressources. |
BizTalk :MessageAgent | Utilisation de la mémoire physique (Mo) Seuil d'utilisation de la mémoire physique (Mo) |
Limitation au niveau des sorties
Le mécanisme de limitation BizTalk applique une limitation au niveau des sorties au moteur d'orchestration (XLANG) et des adaptateurs sortants.
Utilisez les compteurs d’état de limitation de remise de messages et durée d’état de limitation de remise de messages associés à l’objet de performance BizTalk :MessageAgent pour mesurer l’état de limitation actuel et la durée de limitation. Pour plus d’informations sur les compteurs de performances de limitation de l’hôte disponibles, consultez Compteurs de performances de limitation de l’hôte.
La limitation au niveau des sorties peut provoquer une retard de remise des messages et les messages peuvent s'accumuler dans la file d'attente en mémoire et engendrer le blocage des threads jusqu'à ce que la condition de limitation soit réduite. Lorsque les threads retirés de la file d'attente sont bloqués, aucun autre message n'est transféré de la base de données MessageBox vers la file d'attente en mémoire pour être remis.
Remise des messages État de limitation |
Déclencheur de la condition de limitation | Actions de limitation prises | Stratégie de réduction | Objet de performance | Compteur de performances |
---|---|---|---|---|---|
1 | Le taux d’entrée de remise de messages pour l’hôte instance dépasse le taux de sortie de remise de messages \* la valeur du facteur de dépassement de débit (pourcentage) spécifiée Ceci peut être dû à la grande complexité des processus, à des adaptateurs de sortie lents ou à des ressources système momentanément faibles. |
Bloquez le thread de remise pendant une période calculée dynamiquement jusqu’à ce que le taux entrant de remise de messages soit égal au taux de remise sortant de la remise de messages \* la valeur spécifiée du facteur d’overdrive de taux (pourcentage). | Utilisez des compteurs de performance pour déterminer la vitesse d'entrée et de sortie de remise des messages. Considérez un facteur de sur-entraînement approprié pour votre environnement. Vérifiez que les valeurs fournies pour les paramètres Durée de la fenêtre d’échantillonnage et Nombre minimal d’exemples sont appropriées pour votre scénario. Pour plus d’informations sur ces paramètres, consultez Comment modifier les paramètres de limitation basés sur le débit. |
BizTalk :MessageAgent | Vitesse d'entrée de remise de messages Vitesse de sortie de publication de messages |
4 | La mémoire de processus dépasse le seuil spécifié. Ceci peut se produire dans des scénarios qui utilisent beaucoup de mémoire, lors du traitement de messages volumineux ou lorsque les adaptateurs d'envoi essaient de traiter simultanément un grand nombre de messages. |
Ralentissez la remise des messages vers les adaptateurs ou XLANG. Réduisez la consommation de mémoire en mettant en attente des instances de service et en réduisant la taille du cache, le cas échéant. Réduisez la taille des réserves de threads utilisées par le Gestionnaire des points de terminaison et/ou l'agent des messages. Effectuez un nettoyage forcé de la mémoire .NET. |
Si le système ne devient pas inactif en raison d’une limitation basée sur la mémoire de processus, il se peut qu’aucune action ne soit nécessaire. Si le compteur de messages en cours de traitement est élevé et que l’utilisation du processeur n’est pas excessive, même en cas de limitation basée sur la mémoire du processus, aucune action supplémentaire n’est peut-être nécessaire. Si le système semble trop limité, envisagez d’augmenter la valeur associée au seuil virtuel de processus pour l’hôte et vérifiez que le instance hôte ne génère pas d’erreur « mémoire insuffisante ». Si une erreur « mémoire insuffisante » est générée en augmentant le seuil virtuel de processus , envisagez de réduire les valeurs pour la taille de la file d’attente de messages internes et les seuils de messages en cours de traitement . Cette stratégie est particulièrement adaptée aux scénarios traitant de nombreux messages. Pour plus d’informations sur ces paramètres, consultez Comment modifier les paramètres de limitation basés sur les ressources. |
BizTalk :MessageAgent | Mémoire de processus élevée Utilisation de la mémoire de processus (Mo) Seuil d'utilisation de la mémoire de processus (Mo) Nombre de messages en cours de traitement Nombre d'instances actives |
3 | Le nombre de messages en cours de remise à une classe de service dépasse le seuil spécifié. Ceci peut être dû à la grande complexité des processus, à des adaptateurs de sortie lents ou à des ressources système momentanément faibles. |
Ralentissez la remise des messages vers les adaptateurs ou XLANG. Réduisez la taille de la réserve de threads utilisée par l'agent des messages. |
Si une limitation excessive se produit, envisagez d’augmenter la valeur associée au seuil des messages en cours de traitement . Pour plus d’informations sur ce paramètre, consultez Comment modifier les paramètres de limitation basés sur les ressourcesRemarque : L’augmentation de cette valeur peut avoir un impact négatif sur les performances de l’adaptateur d’envoi et/ou augmenter l’utilisation de la mémoire du processus. |
BizTalk :MessageAgent | Nombre de messages en cours de traitement Seuil du nombre de messages en cours de traitement |
9 | Le nombre de threads de processus dépasse le seuil spécifié. | Réduire la taille des pools de threads utilisés par l’EPM et/ou l’agent de message | Envisagez d'ajuster les différentes tailles de réserves de threads pour que le système ne puisse pas créer un grand nombre de threads. Pour plus d’informations sur la modification des tailles de pool de threads, consultez How to Modify General Settings et How to Modify Resource Based Throttling Settings. |
BizTalk :MessageAgent | Nombre de threads Seuil de nombre de threads |
5 | La mémoire système dépasse un seuil. | Ralentissez la remise des messages vers les adaptateurs ou XLANG. Réduisez la consommation de mémoire en mettant en attente des instances de service et en réduisant la taille du cache, le cas échéant. Réduisez la taille des réserves de threads utilisées par le Gestionnaire des points de terminaison et/ou l'agent des messages. |
Envisagez de réduire la charge en réduisant la taille par défaut de la réserve de threads du Gestionnaire des points de terminaison et/ou la taille des lots de l'adaptateur. Si le processus ne consomme pas trop de mémoire, envisagez d’augmenter le seuil physique global pour l’hôte. Pour plus d’informations sur la modification du seuil physique global , consultez Comment modifier les paramètres de limitation basés sur les ressources. |
BizTalk :MessageAgent | Utilisation de la mémoire physique (Mo) |