Résoudre les problèmes de performances des travaux Stream Analytics à l’aide de métriques et de dimensions

Pour comprendre la santé d'un poste Azure Stream Analytics, vous devez savoir utiliser les métriques et dimensions du poste. Vous pouvez obtenir les métriques et dimensions qui vous intéressent via le portail Azure, l'extension Visual Studio Code Stream Analytics, ou un SDK.

Le délai en filigrane et les événements d’entrée placés dans le backlog sont les principales métriques qui permettent de déterminer les performances du travail Stream Analytics. Si le délai en filigrane de votre travail augmente continuellement et si les événements d’entrée sont placés dans le backlog, cela signifie que votre travail n’arrive pas à suivre le rythme des événements d’entrée et à produire des sorties en temps opportun.

Cet article vous montre comment utiliser les métriques et les dimensions d’un travail Stream Analytics dans le portail Azure pour résoudre les problèmes de performances d’un travail. Les sections suivantes présentent pas à pas plusieurs exemples qui s’appuient sur la métrique Watermark Delay pour diagnostiquer les problèmes de performances courants.

L’absence d’entrée pour certaines partitions entraîne une augmentation du délai en filigrane du travail

Si le délai en filigrane de votre tâche au parallélisme embarrassant augmente régulièrement, ouvrez Métriques dans le portail Azure. Ensuite, utilisez ces étapes pour déterminer si la cause principale est un manque de données dans certaines partitions de votre source d’entrée :

  1. Vérifiez quelle partition présente le délai en filigrane croissant. Sélectionnez la métrique Délai en filigrane et fractionnez-la par la dimension ID de partition. Dans l’exemple suivant, la partition 465 présente un délai en filigrane élevé.

    Capture d’écran d’un graphique montrant la répartition du retard du watermark par ID de partition dans le cas où une partition ne reçoit aucune entrée.

  2. Vérifiez si des données d’entrée manquent pour cette partition. Sélectionnez la métrique Événements d’entrée et filtrez-la sur cet ID de partition spécifique.

    Capture d’écran d’un graphique montrant le fractionnement d’Événements d’entrée par ID de partition à défaut  d’entrée dans une partition.

Le délai du watermark pour cette partition augmente parce qu’aucun événement d’entrée n’est acheminé vers cette partition. Si la fenêtre de tolérance de votre travail pour les arrivées tardives est de plusieurs heures et si aucune donnée d’entrée ne circule dans une partition, le délai en filigrane pour cette partition continuera d’augmenter jusqu’à ce que la fenêtre d’arrivée tardive soit atteinte.

Par exemple, si votre fenêtre d’arrivée tardive est de 6 heures et si les données d’entrée ne circulent pas dans la partition d’entrée 1, le délai en filigrane pour la partition de sortie 1 augmentera jusqu’à atteindre 6 heures. Vérifiez si votre source d’entrée produit les données comme prévu.

Une asymétrie des données d’entrée entraîne un délai en filigrane élevé

Lorsqu’une tâche en parallélisme embarrassant présente un retard élevé du Watermark Delay, commencez par ventiler la métrique Watermark Delay selon la dimension ID de partition. Puis identifiez si toutes les partitions ont un délai en filigrane élevé, ou s’il ne s’agit que de quelques-uns d’entre elles.

Dans l’exemple suivant, les partitions 0 et 1 ont un délai de watermark plus élevé (environ 20 à 30 secondes) que les huit autres partitions. Les retards de watermark des autres partitions restent toujours stables, autour de 8 à 10 secondes.

Capture d’écran d’un graphique montrant le Watermark Delay réparti par ID de partition dans le cas d’un déséquilibre des données.

Vérifiez à quoi ressemblent les données d’entrée sur ces partitions en divisant la métrique des événements d’entrée par identifiant de partition :

Capture d’écran d’un graphique montrant les Événements d’entrée fractionnés par ID de partition pour le cas d’asymétrie des données.

Dans l’exemple précédent, les partitions (0 et 1) qui présentent un délai de filigrane élevé reçoivent significativement plus de données d’entrée que les autres partitions. Cette condition s’appelle le décalage des données. Les nœuds de streaming qui traitent les partitions avec le décalage des données consomment plus de ressources CPU et mémoire que les autres, comme le montre la capture d’écran suivante.

Capture d’écran d’un diagramme montrant l’utilisation de ressources par des partitions présentant une asymétrie des données.

Les nœuds de streaming qui traitent des partitions présentant un déséquilibre des données plus important affichent un % d’utilisation du processeur et un % d’utilisation des SU (mémoire) plus élevés. Cette pression sur les ressources affecte les performances de la tâche et augmente le retard du filigrane. Pour y remédier, repartitionnez vos données d’entrée de manière plus homogène.

Vous pouvez aussi résoudre ce problème en utilisant le diagramme physique des tâches. Pour plus d’informations, voir Diagramme physique des tâches : Identifier les événements d’entrée distribués inégalement (data-skew).

Une surcharge du processeur ou de la mémoire augmente le retard du watermark

Lorsqu’une tâche au parallélisme embarrassant présente un retard croissant de filigrane, ce délai peut affecter toutes les partitions, pas seulement une ou plusieurs. Pour confirmer que votre poste est dans cette situation, suivez ces étapes :

  1. Fractionnez la métrique Délai en filigrane par ID de partition. Par exemple :

    Capture d’écran d’un graphique montrant le Watermark Delay ventilé par ID de partition dans le cas d’une surcharge du processeur et de la mémoire.

  2. Divisez la métrique des événements d’entrée par identifiant de partition pour vérifier s’il y a un décalage de données dans les données d’entrée de chaque partition.

  3. Vérifiez les métriques d’utilisation du CPU % et de SU (mémoire) % d’utilisation pour voir si l’utilisation est trop élevée dans tous les nœuds de streaming.

    Capture d’écran d’un graphique montrant l’utilisation du processeur et de la mémoire fractionnée par nom de nœud pour le cas de surcharge du processeur et de la mémoire.

  4. Si les deux indicateurs sont élevés (plus de 80 %) dans tous les nœuds de streaming, on peut conclure que chaque nœud de streaming traite une grande quantité de données.

    Vérifiez combien de partitions sont allouées à un nœud de streaming en utilisant l’indicateur Événements d’entrée . Filtrez par ID de nœud de streaming avec la dimension Nom de nœud et fractionnez par ID de partition.

    Capture d’écran d’un graphique montrant le nombre de partitions sur un nœud de streaming pour le cas de surcharge du processeur et de la mémoire.

  5. La capture d’écran précédente montre que quatre partitions sont allouées à un nœud de streaming qui occupe environ 90 à 100 % de la ressource de nœud de streaming. Utilisez une approche similaire pour vérifier les autres nœuds de streaming et confirmer qu’ils traitent aussi les données de quatre partitions.

Réduisez le nombre de partitions que chaque nœud de flux gère afin de diminuer les données d’entrée par nœud. Pour ce faire, doublez les SU afin que chaque nœud de flux gère les données de deux partitions, ou quadruplez les SU pour que chaque nœud de streaming gère les données d’une partition. Pour plus d’informations sur la relation entre l’attribution d’unités de streaming et le nombre de nœuds de streaming, consultez Comprendre et ajuster les unités de streaming.

Que dois-je faire si le délai en filigrane continue d’augmenter quand un seul nœud de streaming gère les données d’une seule partition ? Repartitionnez votre entrée avec davantage de partitions pour réduire la quantité de données dans chaque partition. Pour plus de détails, consultez Utiliser le repartitionnement pour optimiser des travaux Azure Stream Analytics.

Vous pouvez aussi déboguer ce problème avec le diagramme physique du travail. Pour plus d’informations, voir Diagramme physique des tâches : Identifier la cause de la surcharge du CPU ou de la mémoire.