Share via


Prestaties van Stream Analytics-taken analyseren met behulp van metrische gegevens en dimensies

Als u de status van een Azure Stream Analytics-taak wilt begrijpen, is het belangrijk om te weten hoe u de metrische gegevens en dimensies van de taak gebruikt. U kunt Azure Portal, de Visual Studio Code Stream Analytics-extensie of een SDK gebruiken om de metrische gegevens en dimensies op te halen waarin u geïnteresseerd bent.

In dit artikel wordt gedemonstreert hoe u metrische gegevens en dimensies van Stream Analytics-taken gebruikt om de prestaties van een taak te analyseren via Azure Portal.

Watermerkvertraging en vastgelegde invoergebeurtenissen zijn de belangrijkste metrische gegevens om de prestaties van uw Stream Analytics-taak te bepalen. Als de watermerkvertraging van uw taak voortdurend toeneemt en invoergebeurtenissen worden teruggelogd, kan uw taak niet op de hoogte blijven van de snelheid van invoergebeurtenissen en tijdig uitvoer produceren.

Laten we eens kijken naar verschillende voorbeelden om de prestaties van een taak te analyseren via de metrische gegevens voor watermerkvertraging als uitgangspunt.

Geen invoer voor een bepaalde partitie verhoogt de vertraging van het taakwatermerk

Als de watermerkvertraging van uw parallelle taak geleidelijk toeneemt, gaat u naar Metrische gegevens. Gebruik vervolgens deze stappen om erachter te komen of de hoofdoorzaak een gebrek aan gegevens is in sommige partities van uw invoerbron:

  1. Controleer welke partitie de toenemende watermerkvertraging heeft. Selecteer de meetwaarde Watermerkvertraging en splitst deze op basis van de dimensie Partitie-id . In het volgende voorbeeld heeft partitie 465 een hoge watermerkvertraging.

    Schermopname van een grafiek met watermerkvertraging splitsen op partitie-id voor het geval van geen invoer in een partitie.

  2. Controleer of er invoergegevens ontbreken voor deze partitie. Selecteer de metrische gegevens voor invoerevenementen en filter deze op deze specifieke partitie-id.

    Schermopname van een grafiek met invoerevenementen die worden gesplitst op partitie-id voor het geval van geen invoer in een partitie.

Welke verdere actie kunt u ondernemen?

De watermerkvertraging voor deze partitie neemt toe omdat er geen invoergebeurtenissen naar deze partitie stromen. Als het tolerantievenster van uw taak voor late aankomst enkele uren is en er geen invoergegevens naar een partitie stromen, wordt verwacht dat de watermerkvertraging voor die partitie blijft toenemen totdat het venster voor late aankomst is bereikt.

Als uw venster voor late aankomst bijvoorbeeld 6 uur is en invoergegevens niet naar invoerpartitie 1 stromen, neemt de watermerkvertraging voor uitvoerpartitie 1 toe totdat deze 6 uur bereikt. U kunt controleren of uw invoerbron gegevens produceert zoals verwacht.

Scheeftrekken van invoergegevens veroorzaakt een hoge watermerkvertraging

Zoals eerder vermeld, is het eerste wat u moet doen wanneer uw gênant parallelle taak een hoge watermerkvertraging heeft, de metrische gegevens voor watermerkvertraging opsplitsen met de dimensie Partitie-id. U kunt vervolgens bepalen of alle partities een hoge watermerkvertraging hebben of slechts een paar van deze partities.

In het volgende voorbeeld hebben partities 0 en 1 een hogere watermerkvertraging (ongeveer 20 tot 30 seconden) dan de andere acht partities hebben. De watermerkvertragingen van de andere partities zijn altijd stabiel op ongeveer 8 tot 10 seconden.

Schermopname van een grafiek waarin watermerkvertraging wordt gesplitst op partitie-id voor het geval van scheeftrekken van gegevens.

Laten we eens kijken hoe de invoergegevens eruit zien voor al deze partities met de metrische invoer gebeurtenissen gesplitst op partitie-id:

Schermopname van een grafiek waarin invoergebeurtenissen worden gesplitst op partitie-id voor het geval van scheeftrekken van gegevens.

Welke verdere actie kunt u ondernemen?

Zoals in het voorbeeld wordt weergegeven, ontvangen de partities (0 en 1) met een hoge watermerkvertraging aanzienlijk meer invoergegevens dan andere partities. We noemen deze gegevens scheeftrekken. De streamingknooppunten die de partities verwerken met scheeftrekken van gegevens, moeten meer CPU- en geheugenresources verbruiken dan andere, zoals wordt weergegeven in de volgende schermopname.

Schermopname van een grafiek met het resourcegebruik van partities met scheeftrekken van gegevens.

Streamingknooppunten die partities verwerken met een hogere scheeftrekken van gegevens, vertonen een hoger CPU- en/of STREAMING-eenheidsgebruik (SU). Dit gebruik is van invloed op de prestaties van de taak en verhoogt de watermerkvertraging. Om dit te verhelpen, moet u uw invoergegevens gelijkmatiger partitioneren.

U kunt dit probleem ook oplossen met een fysiek taakdiagram. Zie fysiek taakdiagram: De ongelijke gedistribueerde invoergebeurtenissen (gegevensverschil) identificeren.

Overbelaste CPU of geheugen verhoogt de watermerkvertraging

Wanneer een gênant parallelle taak een toenemende watermerkvertraging heeft, kan het gebeuren op niet slechts één of meerdere partities, maar op alle partities. Hoe bevestigt u dat uw taak in dit geval valt?

  1. Splits de metriek Watermerkvertraging op partitie-id. Voorbeeld:

    Schermopname van een grafiek met watermerkvertraging gesplitst op partitie-id voor het geval van overbelaste CPU en geheugen.

  2. Splits de metrische gegevens voor invoergebeurtenissen op partitie-id om te bevestigen of er sprake is van scheeftrekken van gegevens in invoergegevens voor elke partitie.

  3. Controleer het CPU- en SU-gebruik om te zien of het gebruik in alle streamingknooppunten te hoog is.

    Schermopname van een grafiek waarin het CPU- en geheugengebruik wordt gesplitst op knooppuntnaam voor het geval van overbelaste CPU en geheugen.

  4. Als het CPU- en SU-gebruik zeer hoog is (meer dan 80 procent) in alle streamingknooppunten, kunt u concluderen dat deze taak een grote hoeveelheid gegevens bevat die binnen elk streamingknooppunt wordt verwerkt.

    U kunt verder controleren hoeveel partities aan één streamingknooppunt worden toegewezen door de metrische gegevens voor invoerevenementen te controleren. Filter op streamingknooppunt-id met de dimensie Knooppuntnaam en splits op partitie-id.

    Schermopname van een grafiek met het aantal partities op één streamingknooppunt voor het geval van overbelaste CPU en geheugen.

  5. In de voorgaande schermopname ziet u dat vier partities worden toegewezen aan één streamingknooppunt dat ongeveer 90 tot 100 procent van de resource van het streamingknooppunt in beslag neemt. U kunt een vergelijkbare benadering gebruiken om de rest van de streamingknooppunten te controleren om te controleren of ze ook gegevens van vier partities verwerken.

Welke verdere actie kunt u ondernemen?

Mogelijk wilt u het aantal partities voor elk streamingknooppunt verminderen om de invoergegevens voor elk streamingknooppunt te verminderen. Om dit te bereiken, kunt u de SU's verdubbelen om elk streamingknooppunt gegevens van twee partities te laten verwerken. U kunt ook vier keer zo veel mogelijk de SU's gebruiken om elk streamingknooppunt gegevens uit één partitie te laten verwerken. Zie Streaming-eenheden begrijpen en aanpassen voor informatie over de relatie tussen su-toewijzing en het aantal streamingknooppunten.

Wat moet u doen als de watermerkvertraging nog steeds toeneemt wanneer één streamingknooppunt gegevens van één partitie verwerkt? Partitioneer uw invoer opnieuw met meer partities om de hoeveelheid gegevens in elke partitie te verminderen. Zie Repartitioning gebruiken om Azure Stream Analytics-taken te optimaliseren voor meer informatie.

U kunt dit probleem ook oplossen met een fysiek taakdiagram. Zie het diagram van de fysieke taak: de oorzaak van overbelaste CPU of geheugen identificeren.

Volgende stappen