Analizowanie wydajności zadań usługi Stream Analytics przy użyciu metryk i wymiarów

Aby zrozumieć kondycję zadania usługi Azure Stream Analytics, ważne jest, aby wiedzieć, jak używać metryk i wymiarów zadania. Możesz użyć Azure Portal, rozszerzenia usługi Visual Studio Code Stream Analytics lub zestawu SDK, aby uzyskać interesujące Cię metryki i wymiary.

W tym artykule pokazano, jak używać metryk i wymiarów zadań usługi Stream Analytics do analizowania wydajności zadania za pośrednictwem Azure Portal.

Opóźnienie znaku wodnego i zaległe zdarzenia wejściowe to główne metryki określające wydajność zadania usługi Stream Analytics. Jeśli opóźnienie znaku wodnego zadania stale rośnie, a zdarzenia wejściowe są zaległe, zadanie nie może nadążyć za szybkością zdarzeń wejściowych i w odpowiednim czasie wygenerować dane wyjściowe.

Przyjrzyjmy się kilku przykładom, aby przeanalizować wydajność zadania za pomocą danych metryk Opóźnienia znaku wodnego jako punktu początkowego.

Brak danych wejściowych dla określonej partycji zwiększa opóźnienie limitu zadania

Jeśli żenujące opóźnienie znaku wodnego zadania równoległego stale rośnie, przejdź do pozycji Metryki. Następnie wykonaj następujące kroki, aby dowiedzieć się, czy główną przyczyną jest brak danych w niektórych partycjach źródła danych wejściowych:

  1. Sprawdź, która partycja ma rosnące opóźnienie limitu. Wybierz metryki Opóźnienie limitu i podziel ją według wymiaru Identyfikator partycji . W poniższym przykładzie partycja 465 ma duże opóźnienie limitu.

    Zrzut ekranu przedstawiający wykres przedstawiający opóźnienie podziału limitu według identyfikatora partycji w przypadku braku danych wejściowych w partycji.

  2. Sprawdź, czy brakuje danych wejściowych dla tej partycji. Wybierz metryki Zdarzenia wejściowe i przefiltruj ją do tego konkretnego identyfikatora partycji.

    Zrzut ekranu przedstawiający wykres przedstawiający zdarzenia wejściowe podzielone według identyfikatora partycji w przypadku braku danych wejściowych w partycji.

Jakie dalsze działania można podjąć?

Opóźnienie limitu dla tej partycji zwiększa się, ponieważ żadne zdarzenia wejściowe nie przepływają do tej partycji. Jeśli okno tolerancji zadania dla opóźnionych przylotów wynosi kilka godzin i żadne dane wejściowe nie przepływają do partycji, oczekuje się, że opóźnienie znaku wodnego dla tej partycji będzie nadal zwiększać się do momentu osiągnięcia późnego okna przylotu.

Jeśli na przykład okno opóźnionego przybycia wynosi 6 godzin, a dane wejściowe nie przepływają do partycji wejściowej 1, opóźnienie limitu dla partycji wyjściowej 1 wzrośnie do momentu osiągnięcia 6 godzin. Możesz sprawdzić, czy źródło danych wejściowych generuje dane zgodnie z oczekiwaniami.

Niesymetryczność danych wejściowych powoduje duże opóźnienie limitu

Jak wspomniano w poprzednim przypadku, gdy żenujące zadanie równoległe ma duże opóźnienie limitu, najpierw należy podzielić metrykę Opóźnienie znaku wodnego według wymiaru Identyfikator partycji . Następnie można określić, czy wszystkie partycje mają duże opóźnienie limitu, czy tylko kilka z nich.

W poniższym przykładzie partycje 0 i 1 mają większe opóźnienie limitu (od około 20 do 30 sekund) niż pozostałe osiem partycji. Opóźnienia znaków wodnych innych partycji są zawsze stałe na poziomie około 8 do 10 sekund.

Zrzut ekranu przedstawiający wykres przedstawiający podział opóźnienia znaku wodnego według identyfikatora partycji w przypadku niesymetryczności danych.

Sprawdźmy, jak wyglądają dane wejściowe dla wszystkich tych partycji z zdarzeniami wejściowymi metryki podzielonymi według identyfikatora partycji:

Zrzut ekranu przedstawiający wykres przedstawiający zdarzenia wejściowe podzielone według identyfikatora partycji w przypadku niesymetryczności danych.

Jakie dalsze działania można podjąć?

Jak pokazano w przykładzie, partycje (0 i 1), które mają duże opóźnienie limitu, otrzymują znacznie więcej danych wejściowych niż inne partycje. Nazywamy to niesymetrycznością danych. Węzły przesyłania strumieniowego, które przetwarzają partycje ze niesymetrycznością danych, muszą zużywać więcej zasobów procesora CPU i pamięci niż inne, jak pokazano na poniższym zrzucie ekranu.

Zrzut ekranu przedstawiający wykres przedstawiający wykorzystanie zasobów partycji ze niesymetrycznością danych.

Węzły przesyłania strumieniowego, które przetwarzają partycje z większą niesymetrycznością danych, będą wykazywać wyższe wykorzystanie procesora CPU i/lub jednostki przesyłania strumieniowego (SU). To wykorzystanie wpłynie na wydajność zadania i zwiększy opóźnienie limitu. Aby temu zapobiec, należy jeszcze bardziej równomiernie ponownie partycjonować dane wejściowe.

Ten problem można również debugować na diagramie zadań fizycznych. Zobacz Diagram zadań fizycznych: Identyfikowanie nierównomiernych rozproszonych zdarzeń wejściowych (niesymetryczność danych).

Przeciążony procesor CPU lub pamięć zwiększa opóźnienie limitu

Gdy żenujące zadanie równoległe ma rosnące opóźnienie limitu, może się zdarzyć nie tylko na jednej lub kilku partycjach, ale na wszystkich partycjach. Jak potwierdzić, że zadanie wchodzi w ten przypadek?

  1. Podziel metryki Opóźnienie limitu według identyfikatora partycji. Przykład:

    Zrzut ekranu przedstawiający wykres przedstawiający podział opóźnienia znaku wodnego według identyfikatora partycji dla przypadku przeciążonego procesora CPU i pamięci.

  2. Podziel metryki Zdarzenia wejściowe według identyfikatora partycji , aby potwierdzić, czy dane wejściowe są niesymetryczne dla każdej partycji.

  3. Sprawdź wykorzystanie procesora CPU i jednostek przesyłania strumieniowego, aby sprawdzić, czy użycie we wszystkich węzłach przesyłania strumieniowego jest zbyt wysokie.

    Zrzut ekranu przedstawiający wykres przedstawiający użycie procesora CPU i pamięci podzielone według nazwy węzła w przypadku przeciążonego procesora CPU i pamięci.

  4. Jeśli wykorzystanie procesora CPU i jednostek przesyłania strumieniowego jest bardzo wysokie (ponad 80 procent) we wszystkich węzłach przesyłania strumieniowego, możesz stwierdzić, że to zadanie ma dużą ilość danych przetwarzanych w każdym węźle przesyłania strumieniowego.

    Możesz dodatkowo sprawdzić, ile partycji jest przydzielonych do jednego węzła przesyłania strumieniowego, sprawdzając metryki Zdarzenia wejściowe . Filtruj według identyfikatora węzła przesyłania strumieniowego za pomocą wymiaru Nazwa węzła i podziel według identyfikatora partycji.

    Zrzut ekranu przedstawiający wykres przedstawiający liczbę partycji w jednym węźle przesyłania strumieniowego w przypadku przeciążonego procesora CPU i pamięci.

  5. Powyższy zrzut ekranu pokazuje, że cztery partycje są przydzielane do jednego węzła przesyłania strumieniowego, który zajmuje około 90 do 100 procent zasobu węzła przesyłania strumieniowego. Możesz użyć podobnego podejścia, aby sprawdzić pozostałe węzły przesyłania strumieniowego, aby potwierdzić, że przetwarzają one również dane z czterech partycji.

Jakie dalsze działania można podjąć?

Możesz zmniejszyć liczbę partycji dla każdego węzła przesyłania strumieniowego, aby zmniejszyć dane wejściowe dla każdego węzła przesyłania strumieniowego. Aby to osiągnąć, można podwoić liczbę jednostek przesyłania strumieniowego, aby każdy węzeł przesyłania strumieniowego obsługiwał dane z dwóch partycji. Możesz też czterokrotnie uruchomić jednostki przesyłania strumieniowego, aby każdy węzeł przesyłania strumieniowego obsługiwał dane z jednej partycji. Aby uzyskać informacje o relacji między przypisaniem jednostek SU i liczbą węzłów przesyłania strumieniowego, zobacz Omówienie i dostosowywanie jednostek przesyłania strumieniowego.

Co należy zrobić, jeśli opóźnienie limitu nadal rośnie, gdy jeden węzeł przesyłania strumieniowego obsługuje dane z jednej partycji? Ponowne partycjonowanie danych wejściowych przy użyciu większej liczby partycji w celu zmniejszenia ilości danych w każdej partycji. Aby uzyskać szczegółowe informacje, zobacz Use repartitioning to optimize Azure Stream Analytics jobs (Używanie ponownego partycjonowania do optymalizowania zadań usługi Azure Stream Analytics).

Ten problem można również debugować na diagramie zadań fizycznych. Zobacz Fizyczny diagram zadań: Identyfikowanie przyczyny przeciążonego procesora CPU lub pamięci.

Następne kroki