Beheben von Problemen bei der Leistung von Stream Analytics-Aufträgen mithilfe von Metriken und Dimensionen

Um die Gesundheit eines Azure Stream Analytics-Jobs zu verstehen, müssen Sie wissen, wie man die Kennzahlen und Dimensionen des Jobs verwendet. Sie können die Metriken und Dimensionen, die Sie interessieren, aus dem Azure-Portal, der Visual Studio Code Stream Analytics Erweiterung oder einem SDK erhalten.

Wasserzeichenverzögerung und Eingabeereignisse im Rückstand sind die wichtigsten Metriken zur Bestimmung der Leistung eines Stream Analytics-Einzelvorgangs. Wenn die Wasserzeichenverzögerung Ihres Einzelvorgangs kontinuierlich ansteigt und es zu einem Rückstand von Eingabeereignissen kommt, kann der Einzelvorgang nicht mit der Rate der Eingabeereignisse Schritt halten und rechtzeitig Ausgaben produzieren.

Dieser Artikel zeigt Ihnen, wie Sie Stream Analytics Job-Metriken und -Dimensionen im Azure-Portal verwenden, um die Leistung eines Auftrags zu untersuchen. Die folgenden Abschnitte führen mehrere Beispiele durch, die mit der Watermark-Verzögerungsmetrik ausgehen, um häufige Leistungsprobleme zu diagnostizieren.

Keine Eingabe für eine bestimmte Partition erhöht die Wasserzeichenverzögerung des Auftrags

Wenn die Wasserzeichen-Verzögerung Ihres hochgradig parallelen Einzelvorgängen stetig zunimmt, öffnen Sie Metriken im Azure-Portal. Verwenden Sie dann diese Schritte, um herauszufinden, ob die Ursache ein Mangel an Daten in einigen Partitionen Ihrer Eingabequelle ist:

  1. Überprüfen Sie, welche Partition die zunehmende Wasserzeichenverzögerung aufweist. Wählen Sie die Metrik Watermark Delay aus und schlüsseln Sie sie nach der Dimension Partition ID auf. In dem folgenden Beispiel weist die Partition 465 eine hohe Wasserzeichenverzögerung auf.

    Screenshot: Diagramm, das die Aufteilung der Wasserzeichenverzögerung nach Partitions-ID für den Fall zeigt, dass in einer Partition keine Eingabe erfolgt

  2. Überprüfen Sie, ob für diese Partition noch Eingabedaten fehlen. Wählen Sie die Metrik Eingabeereignisse aus, und filtern Sie sie nach dieser speziellen Partitions-ID.

    Screenshot: Diagramm, das die Aufteilung der Eingabeereignisse nach Partitions-ID für den Fall zeigt, dass in einer Partition keine Eingabe erfolgt

Die Wasserzeichenverzögerung für diese Partition nimmt zu, da keine Eingabeereignisse in diese Partition fließen. Wenn das Toleranzfenster für die Eingangsverzögerung Ihres Auftrags mehrere Stunden beträgt und keine Eingabedaten in eine Partition fließen, wird die Wasserzeichenverzögerung für diese Partition voraussichtlich weiter ansteigen, bis das Fenster für die Eingangsverzögerung erreicht ist.

Wenn z. B. Ihr Fenster für die Eingangsverzögerung sechs Stunden beträgt und die Eingabedaten nicht in die Eingabepartition 1 fließen, wird die Wasserzeichenverzögerung für die Ausgabepartition 1 erhöht, bis sie sechs Stunden erreicht. Überprüfe, ob deine Eingabequelle die Daten wie erwartet erzeugt.

Eingabedatenschiefe verursacht hohe Wasserzeichenverzögerung

Wenn Ihr hochgradig paralleler Job eine hohe Wasserzeichen-Verzögerung hat, teilen Sie zuerst die Wasserzeichenverzögerungs-Metrik durch die Partitions-ID-Dimension. Finden Sie dann heraus, ob alle Partitionen eine hohe Wasserzeichenverzögerung aufweisen oder nur einige von ihnen.

Im folgenden Beispiel haben die Partitionen 0 und 1 eine höhere Watermark-Verzögerung (etwa 20 bis 30 Sekunden) als die anderen acht Partitionen. Die Wasserzeichenverzögerungen der anderen Partitionen liegen immer gleichbleibend bei etwa 8 bis 10 Sekunden.

Screenshot eines Diagramms, das die Wasserzeichenverzögerung für den Fall einer Datenschiefe nach Partitions-ID aufgeschlüsselt zeigt.

Überprüfen Sie, wie die Eingabedaten über diese Partitionen hinweg aussehen, indem Sie die Eingabeereignis-Metrik nach Partitions-ID aufteilen:

Screenshot: Diagramm, das die Eingabeereignisse aufgeteilt nach Partitions-ID für den Fall einer Datenschiefe zeigt

Im vorherigen Beispiel erhalten die Partitionen (0 und 1) mit hoher Wasserzeichen-Verzögerung deutlich mehr Eingabedaten als die anderen Partitionen. Dieses Phänomen wird als Datenungleichverteilung bezeichnet. Die Streaming-Knoten, die die Partitionen mit Data Skew verarbeiten, verbrauchen mehr CPU- und Speicherressourcen als die anderen, wie der folgende Screenshot zeigt.

Screenshot: Diagramm, das die Ressourcenauslastung von Partitionen mit Datenschiefe zeigt

Streaming-Knoten, die Partitionen mit höherem Datenstreu verarbeiten, zeigen eine höhere CPU-% Auslastung sowie SU (Speicher) % Auslastung. Dieser Ressourcendruck beeinträchtigt die Leistung des Einzelvorgangs und erhöht die Wasserzeichenverzögerung. Um dem entgegenzuwirken, partitioniere deine Eingabedaten gleichmäßiger neu.

Du kannst dieses Problem auch mit dem physischen Jobdiagramm debuggen. Weitere Informationen finden Sie unter Physisches Einzelvorgangsdiagramm: Identifizieren der ungleichmäßig verteilten Eingabeereignisse (Data-Skew).

Überlasteter CPU oder überlasteter Arbeitsspeicher erhöhen die Wasserzeichenverzögerung

Wenn ein hochgradig paralleler Einzelvorgang eine zunehmende Wasserzeichenverzögerung aufweist, kann die Verzögerung alle Partitionen betreffen, nicht nur eine oder mehrere. Um zu bestätigen, dass Ihr Arbeitgeber in dieser Situation ist, verwenden Sie diese Schritte:

  1. Teilen Sie die Metrik Wasserzeichenverzögerung durch Partitions-ID auf. Beispiel:

    Screenshot: Diagramm, das die Wasserzeichenverzögerung aufgeteilt nach Partitions-ID für den Fall einer überlasteten CPU oder von überlastetem Arbeitsspeicher zeigt

  2. Teile die Eingabe-Events-Metrik nach Partitions-ID auf, um zu bestätigen, ob die Datenverschiebung in den Eingabedaten jeder Partition vorliegt.

  3. Überprüfen Sie die CPU-%-Auslastungs - sowie SU (Speicher-)% Nutzungsmetriken , um zu sehen, ob die Auslastung in allen Streaming-Knoten zu hoch ist.

    Screenshot: Diagramm, das die CPU- und Arbeitsspeicherauslastung aufgeteilt nach Knotennamen für den Fall einer überlasteten CPU und eines überlasteten Arbeitsspeichers zeigt

  4. Wenn beide Metriken in allen Streaming-Knoten hoch sind (mehr als 80 Prozent), können Sie schließen, dass jeder Streaming-Knoten eine große Datenmenge verarbeitet.

    Überprüfen Sie, wie viele Partitionen einem Streaming-Knoten zugeordnet sind, indem Sie die Eingabe-Events-Metrik verwenden. Filtern Sie nach der ID des Streamingknotens mit der Dimension Knotenname, und teilen Sie nach Partitions-ID auf.

    Screenshot: Diagramm, das die Anzahl der Partitionen auf einem Streamingknoten für den Fall einer überlasteten CPU und eines überlasteten Arbeitsspeichers zeigt

  5. Der vorangehende Screenshot zeigt, dass einem Streamingknoten vier Partitionen zugeordnet sind, die etwa 90 bis 100 Prozent der Streamingknotenressourcen beanspruchen. Verwende einen ähnlichen Ansatz, um die restlichen Streaming-Knoten zu überprüfen und zu bestätigen, dass sie auch Daten von vier Partitionen verarbeiten.

Reduziere die Anzahl der Partitionen, die jeder Streaming-Knoten verarbeitet, um die Eingabedaten pro Knoten zu verringern. Dazu verdoppeln Sie die SUs, sodass jeder Streaming-Knoten Daten von zwei Partitionen verarbeitet, oder vervierfachen Sie die SUs, sodass jeder Streaming-Knoten Daten von einer Partition verarbeitet. Informationen über die Beziehung zwischen SU-Zuweisung und Anzahl der Streamingknoten finden Sie unter Verstehen und Anpassen von Streamingeinheiten.

Wie können Sie vorgehen, wenn die Wasserzeichenverzögerung weiter zunimmt, während ein Streamingknoten die Daten von einer Partition bearbeitet? Partitionieren Sie Ihre Eingabe mit mehreren Partitionen neu, um die Datenmenge in jeder Partition zu reduzieren. Weitere Informationen finden Sie unter Verwenden der Neupartitionierung zur Optimierung von Azure Stream Analytics-Aufträgen.

Du kannst dieses Problem auch mit dem physischen Jobdiagramm debuggen. Weitere Informationen finden Sie unter Physikalisches Job-Diagramm: Identifizieren Sie die Ursache einer überlasteten CPU oder eines überlasteten Speichers.