Udostępnij za pośrednictwem


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. Aby uzyskać interesujące Cię metryki i wymiary, możesz użyć witryny Azure Portal, rozszerzenia usługi Stream Analytics programu Visual Studio Code lub zestawu SDK.

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

Opóźnienia znaku wodnego i zdarzeń wejściowych z zaległych 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óźnienie znaku wodnego jako punktu początkowego.

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

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 znaku wodnego 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 w tej partycji brakuje danych wejściowych. Wybierz metryę Zdarzenia wejściowe i przefiltruj ją do tego określonego 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 późnych przyjazdów wynosi kilka godzin i żadne dane wejściowe nie przepływają do partycji, oczekuje się, że opóźnienie limitu dla tej partycji będzie nadal zwiększać się do momentu osiągnięcia późnego okna przylotu.

Jeśli na przykład okno późnego 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 wejściowe 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 znaku wodnego, pierwszą rzeczą do zrobienia jest podzielenie metryki Opóźnienie znaku wodnego przez wymiar 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 (około 20 do 30 sekund) niż pozostałe osiem partycji. Opóźnienia znaków wodnych innych partycji są zawsze stałe z około 8 do 10 sekund.

Zrzut ekranu przedstawiający wykres przedstawiający opóźnienie znaku wodnego podzielone 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 wyższymi niesymetrycznościami 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.

Możesz również debugować ten problem z diagramem zadań fizycznych, zobacz Diagram zadań fizycznych: Identyfikowanie nierównych rozproszonych zdarzeń wejściowych (dane-niesymetryczność).

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

Gdy kłopotliwie równoległe zadanie ma rosnące opóźnienie znaku wodnego, może się to 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 znaku wodnego według identyfikatora partycji. Na przykład:

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

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

  3. Sprawdź użycie procesora CPU i jednostki SU, 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 jednostki SU 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ć liczbę partycji 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 przy użyciu 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ą 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 SU i liczbą węzłów przesyłania strumieniowego, zobacz Omówienie i dostosowywanie jednostek przesyłania strumieniowego.

Co 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).

Możesz również debugować ten problem z diagramem zadań fizycznych, zobacz Diagram zadań fizycznych: Identyfikowanie przyczyny przeciążonego procesora CPU lub pamięci.

Następne kroki