Felsök Stream Analytics jobbprestanda genom att använda mätvärden och dimensioner

För att förstå hälsan hos ett Azure Stream Analytics-jobb behöver du veta hur du använder jobbets mätvärden och dimensioner. Du kan få de mätvärden och dimensioner du är intresserad av från Azure-portalen, Visual Studio Code Stream Analytics-tillägget eller ett SDK.

Vattenmärkesfördröjning och eftersläpande indatahändelser är de huvudsakliga måtten som bestämmer prestandan för ett Stream Analytics-jobb. Om ditt jobbs vattenstämpelsfördröjning ökar kontinuerligt och inmatningshändelser är eftersläpnade, kan jobbet inte hänga med i hastigheten på inmatningshändelser och kan inte producera utdata i tid.

Den här artikeln visar hur du använder Stream Analytics jobbmetrik och dimensioner i Azure-portalen för att felsöka ett jobbs prestanda. Följande avsnitt går igenom flera exempel som utgår från Watermark Delay-metriken för att diagnostisera vanliga prestandafel.

Inga indata för en viss partition ökar jobbvattenstämpelfördröjningen

Om vattenmärkesfördröjningen för ditt helt parallella jobb stadigt ökar öppnar du Metrics i Azure-portalen. Använd sedan dessa steg för att ta reda på om grundorsaken är brist på data i vissa partitioner av din inmatningskälla:

  1. Kontrollera vilken partition som har den ökande vattenstämpelfördröjningen. Välj måttet Vattenstämpelfördröjning och dela upp det med dimensionen partitions-ID . I följande exempel har partition 465 en high watermark-fördröjning.

    Skärmbild av ett diagram som visar uppdelning av vattenstämpelfördröjning efter partitions-ID för fallet där det inte finns några indata i en partition.

  2. Kontrollera om det saknas indata för denna partition. Välj måttet Indatahändelser och filtrera det till det här specifika partitions-ID:t.

    Skärmbild av ett diagram som visar delning av indatahändelser efter partitions-ID om det inte finns några indata i en partition.

Vattenstämpelfördröjningen för den här partitionen ökar eftersom inga indatahändelser flödar in i den här partitionen. Om ditt jobbs toleransfönster för sena ankomster är flera timmar och ingen indata flödar in i en partition, förväntas vattenstämpelfördröjningen för den partitionen fortsätta öka tills den når det sen ankomstfönstret.

Till exempel, om ditt sena ankomstfönster är sex timmar och indata inte flödar in i inmatningspartition 1, kommer vattenstämpelsfördröjningen för utdatapartition 1 att öka tills den når sex timmar. Kontrollera om din indatakälla levererar data som förväntat.

Skevhet i indata orsakar en fördröjning av high watermark

När ditt extremt parallella jobb har en hög fördröjning i Watermark Delay-måttet, delar du först upp Watermark Delay-måttet utifrån dimensionen Partition ID. Identifiera sedan om alla partitioner har en hög vattenstämpelsfördröjning, eller bara några få.

I följande exempel har partitionerna 0 och 1 högre vattenstämpelsfördröjning (cirka 20 till 30 sekunder) än de andra åtta partitionerna. De andra partitionernas vattenstämpelfördröjningar är alltid stabila på cirka 8 till 10 sekunder.

Skärmbild av ett diagram som visar vattenstämpelfördröjningen uppdelad efter partitions-ID:n vid datasnedvridning.

Kontrollera hur indatan ser ut över dessa partitioner genom att dela upp Input Events-metriken efter partitions-ID:

Skärmbild av ett diagram som visar indatahändelser uppdelade efter partitions-ID för fall av datasnedvridning.

I det föregående exemplet får partitionerna (0 och 1) som har hög vattenstämpelsfördröjning betydligt mer indata än de andra partitionerna. Detta tillstånd kallas dataskew. De strömmande noder som bearbetar partitionerna med dataskew förbrukar mer CPU- och minnesresurser än de andra, vilket följande skärmdump visar.

Skärmbild av ett diagram som visar resursutnyttjandet av partitioner med datasnedvridning.

Strömningsnoder som bearbetar partitioner med högre dataskevhet uppvisar högre CPU-användning i % och SU-användning (minne) i %. Denna resurspress påverkar arbetets prestanda och ökar vattenstämpelsfördröjningen. För att motverka det, ompartitionera dina indata jämnare.

Du kan också felsöka detta problem genom att använda det fysiska jobbdiagrammet. För mer information, se Fysiskt jobbdiagram: Identifiera de ojämna distribuerade inmatningshändelserna (data-skew).

Överbelastad PROCESSOR eller minne ökar vattenstämpelfördröjningen

När ett pinsamt parallellt jobb har en ökande vattenmärkesfördröjning kan fördröjningen påverka alla partitioner, inte bara en eller flera. För att bekräfta att ditt jobb är i denna situation, använd dessa steg:

  1. Dela upp mätvärdet Vattenstämpelfördröjning efter Partitions-ID. Till exempel:

    Skärmbild av ett diagram som visar vattenstämpelfördröjningen uppdelad efter partitions-ID för överlagrad processor och minne.

  2. Dela upp måttet inmatningshändelser per partitions-ID för att kontrollera om det finns dataskevhet i indata för varje partition.

  3. Kontrollera CPU-% Utilization och SU (Memory) % Utilization för att se om utnyttjandet är för högt i alla strömmande noder.

    Skärmbild av ett diagram som visar processor- och minnesanvändning uppdelat efter nodnamn för överlagrade processorer och minne.

  4. Om båda mätvärdena är höga (mer än 80 procent) i alla strömmande noder kan du dra slutsatsen att varje strömmande nod bearbetar en stor mängd data.

    Kontrollera hur många partitioner som är allokerade till en strömmande nod genom att använda Input Events-metriken . Filtrera efter strömmande nod-ID med dimensionen Nodnamn och dela upp med partitions-ID.

    Skärmbild av ett diagram som visar partitionsantalet på en strömmande nod för överlagrade processorer och minne.

  5. Föregående skärmbild visar att fyra partitioner allokeras till en direktuppspelningsnod som upptar cirka 90 till 100 procent av den strömmande nodresursen. Använd en liknande metod för att kontrollera resten av streamingnoderna och bekräfta att de också bearbetar data från fyra partitioner.

Minska antalet partitioner som varje strömmande nod hanterar för att minska indatan per nod. För att göra detta, dubbla antalet SU:er så att varje strömmande nod hanterar data från två partitioner, eller fyrdubbla antalet SU:er så att varje strömmande nod hanterar data från en partition. Information om relationen mellan SU-tilldelning och antal direktuppspelningsnoder finns i Förstå och justera strömningsenheter.

Vad ska du göra om vattenstämpelfördröjningen fortfarande ökar när en strömmande nod hanterar data från en partition? Partitionera om dina indata med fler partitioner för att minska mängden data i varje partition. Mer information finns i Använda ompartitionering för att optimera Azure Stream Analytics-jobb.

Du kan också felsöka detta problem med det fysiska jobbdiagrammet. För mer information, se diagram över fysiskt jobb: Identifiera orsaken till överbelastad CPU eller minne.