Debugowanie przy użyciu diagramu zadań fizycznych (wersja zapoznawcza) w Azure Portal

Diagram zadań fizycznych w Azure Portal może pomóc w wizualizacji kluczowych metryk zadania za pomocą węzła przesyłania strumieniowego w formacie diagramu lub tabeli, na przykład: użycie procesora CPU, wykorzystanie pamięci, zdarzenia wejściowe, identyfikatory partycji i opóźnienie znaku wodnego. Pomaga zidentyfikować przyczynę problemu podczas rozwiązywania problemów.

W tym artykule pokazano, jak używać fizycznego diagramu zadań do analizowania wydajności zadania i szybkiego identyfikowania wąskich gardeł w Azure Portal.

Ważne

Ta funkcja jest obecnie dostępna w wersji zapoznawczej. Zobacz Dodatkowe warunki użytkowania wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta lub wersji zapoznawczej albo w inny sposób nie zostały jeszcze wydane jako ogólnie dostępne.

Identyfikowanie równoległości zadania

Zadanie z równoległym przetwarzaniem jest skalowalnym scenariuszem w usłudze Stream Analytics, który może zapewnić lepszą wydajność. Jeśli zadanie nie jest w trybie równoległym, najprawdopodobniej ma pewne wąskie gardło wydajności. Ważne jest, aby określić, czy zadanie jest w trybie równoległym, czy nie. Diagram zadań fizycznych zawiera wizualny graf ilustrowany równoległość zadań. Na diagramie zadań fizycznych, jeśli istnieje interakcja danych między różnymi węzłami przesyłania strumieniowego, to zadanie jest niezrównane zadanie, które wymaga większej uwagi. Na przykład poniższy diagram zadań niezrównanych:

Zrzut ekranu przedstawiający zadanie niezrównane na diagramie fizycznym.

Możesz rozważyć optymalizację zadania równoległego (na przykład poniżej), zapisując ponownie zapytanie lub aktualizując konfiguracje danych wejściowych/wyjściowych za pomocą symulatora diagramu zadania w Visual Studio Code rozszerzenia ASA lub edytora zapytań w Azure Portal. Aby dowiedzieć się więcej, zobacz Optymalizowanie zapytania przy użyciu symulatora diagramu zadań (wersja zapoznawcza).

Zrzut ekranu przedstawiający widok niesymetryczności danych z diagramem fizycznym.

Kluczowe metryki identyfikujące wąskie gardło zadania równoległego

Opóźnienie znaku wodnego i zaległe zdarzenia wejściowe to kluczowe metryki umożliwiające określenie wydajności 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. Z punktu widzenia zasobów obliczeniowych zasoby procesora CPU i pamięci są używane na wysokim poziomie, gdy tak się stanie.

Diagram zadań fizycznych wizualizuje te kluczowe metryki na diagramie razem, aby zapewnić pełny obraz ich identyfikacji w celu łatwego identyfikowania wąskich gardeł.

Zrzut ekranu przedstawiający kluczowe metryki w węźle na diagramie fizycznym.

Aby uzyskać więcej informacji na temat definicji metryk, zobacz Wymiar nazwy węzła usługi Azure Stream Analytics.

Identyfikowanie nierównomiernych rozproszonych zdarzeń wejściowych (niesymetryczność danych)

Jeśli zadanie jest już uruchomione w trybie równoległym, ale obserwujesz duże opóźnienie limitu, użyj tej metody, aby określić, dlaczego.

Aby znaleźć główną przyczynę, otwórz diagram zadań fizycznych w Azure Portal. Wybierz pozycję Diagram zadania (wersja zapoznawcza) w obszarze Monitorowanie i przejdź do diagramu fizycznego.

Zrzut ekranu przedstawiający widok niesymetryczności danych z diagramem fizycznym.

Na diagramie fizycznym można łatwo określić, czy wszystkie partycje mają duże opóźnienie limitu, czy tylko kilka z nich, wyświetlając wartość opóźnienia znaku wodnego w każdym węźle lub wybierając ustawienie mapy cieplnej opóźnienia znaku wodnego, aby posortować węzły przesyłania strumieniowego (zalecane):

Zrzut ekranu przedstawiający ustawienie mapy cieplnej opóźnienia znaku wodnego.

Po zastosowaniu powyższych ustawień mapy cieplnej węzły przesyłania strumieniowego będą miały duże opóźnienie limitu w lewym górnym rogu. Następnie możesz sprawdzić, czy odpowiednie węzły przesyłania strumieniowego mają znacznie więcej zdarzeń wejściowych niż inne. W tym przykładzie węzły streamingnode#0 i streamingnode#1 mają więcej zdarzeń wejściowych.

Zrzut ekranu przedstawiający widok niesymetryczności danych z diagramem fizycznym na mapie cieplnej opóźnienia znaku wodnego.

Możesz dodatkowo sprawdzić, ile partycji jest przydzielonych do węzłów przesyłania strumieniowego indywidualnie, aby dowiedzieć się, czy więcej zdarzeń wejściowych jest spowodowanych przez większą liczbę przydzielonych partycji lub dowolną konkretną partycję z większą liczbą zdarzeń wejściowych. W tym przykładzie wszystkie węzły przesyłania strumieniowego mają dwie partycje. Oznacza to, że węzeł streamingnode#0 i streamingnode#1 mają określoną partycję, która zawiera więcej zdarzeń wejściowych niż inne partycje.

Aby zlokalizować, która partycja ma więcej zdarzeń wejściowych niż inne partycje w węzłach streamingnode#0 i streamingnode#1, wykonaj następujące czynności:

  • Wybieranie pozycji Dodaj wykres w sekcji wykresu
  • Dodawanie zdarzeń wejściowych do metryki i identyfikatora partycji na rozdzielacz
  • Wybierz pozycję Zastosuj , aby wyświetlić wykres zdarzeń wejściowych
  • Znacznik przesyłania strumieniowego węzła#0 i streamingnode#1 na diagramie

Zobaczysz poniższy wykres z metrykami zdarzeń wejściowych filtrowanych według partycji w dwóch węzłach przesyłania strumieniowego.

Zrzut ekranu przedstawiający zdarzenia wejściowe podzielone według partycji i węzła.

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

Jak pokazano w przykładzie, partycje (0 i 1) mają 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. Ta nierównowaga prowadzi do wolniejszej wydajności i zwiększa opóźnienie limitu. Użycie procesora CPU i pamięci można sprawdzić również w dwóch węzłach przesyłania strumieniowego na diagramie fizycznym. Aby rozwiązać ten problem, należy jeszcze bardziej równomiernie ponownie partycjonować dane wejściowe.

Identyfikowanie przyczyny przeciążonego procesora CPU lub pamięci

Gdy zadanie równoległe ma rosnące opóźnienie limitu bez wcześniej wymienionej sytuacji niesymetryczności danych, może to być spowodowane znaczną ilością danych we wszystkich węzłach przesyłania strumieniowego, które hamują wydajność. Możesz określić, że zadanie ma tę charakterystykę, korzystając z diagramu fizycznego.

  1. Otwórz diagram zadań fizycznych, przejdź do zadania Azure Portal w obszarze Monitorowanie, wybierz pozycję Diagram zadań (wersja zapoznawcza) i przejdź do diagramu fizycznego. Zobaczysz fizyczny diagram załadowany w następujący sposób.

    Zrzut ekranu przedstawiający przegląd przeciążonego zadania procesora CPU i pamięci.

  2. Sprawdź wykorzystanie procesora CPU i pamięci w każdym węźle przesyłania strumieniowego, aby sprawdzić, czy użycie we wszystkich węzłach przesyłania strumieniowego jest zbyt wysokie. Jeśli wykorzystanie procesora CPU i jednostek przesyłania strumieniowego jest 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.

    W powyższym przypadku wykorzystanie procesora CPU wynosi około 90%, a wykorzystanie pamięci wynosi już 100%. Pokazuje on, że w każdym węźle przesyłania strumieniowego brakuje zasobu do przetwarzania danych.

    Zrzut ekranu przedstawiający przeciążone użycie procesora CPU i pamięci we wszystkich węzłach.

  3. Sprawdź, ile partycji jest przydzielonych do każdego węzła przesyłania strumieniowego, aby określić, czy potrzebujesz więcej węzłów przesyłania strumieniowego, aby zrównoważyć partycje, aby zmniejszyć obciążenie istniejących węzłów przesyłania strumieniowego.

    W tym przypadku każdy węzeł przesyłania strumieniowego ma przydzielone cztery partycje, które wyglądają zbytnio na węzeł przesyłania strumieniowego.

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

Rozważ zmniejszenie liczby partycji dla każdego węzła przesyłania strumieniowego, aby zmniejszyć dane wejściowe. Liczbę jednostek przesyłania strumieniowego przydzielonych do każdego węzła przesyłania strumieniowego można podwoić do dwóch partycji na węzeł, zwiększając liczbę węzłów przesyłania strumieniowego z zakresu od 8 do 16. Możesz też czterokrotnie uruchomić jednostki przesyłania strumieniowego, aby każdy węzeł przesyłania strumieniowego obsługiwał dane z jednej partycji.

Aby dowiedzieć się więcej na temat relacji między węzłem przesyłania strumieniowego a jednostką przesyłania strumieniowego, zobacz Omówienie jednostki przesyłania strumieniowego i węzła 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).

Następne kroki