Loading
Automatisera dina verksamhetsprocesser
Innehållsförteckningar
Välj filter

          Inga resultat
          Inga resultat
          Här är några söktips

          Kontrollera stavningen av dina nyckelord.
          Använd mer allmänna söktermer.
          Välj färre filter för att utöka din sökning.

          Sök hela Salesforce-hjälpen
          Felsök Apex_CPU_TIME_LIMIT_EXCEEDED-fel i flöden

          Felsök Apex_CPU_TIME_LIMIT_EXCEEDED-fel i flöden

          Om en transaktion tar för mycket CPU-tid ger Salesforce ett Apex_CPU_TIME_LIMIT_EXCEEDED-fel. Flöden delar denna gräns med alla andra automatiseringar i samma transaktion, inklusive Apex utlösare.

          Versioner som krävs

          Visa versioner som stöds.
          Användarbehörigheter som krävs
          Öppna, redigera, skapa, aktivera eller inaktivera ett flöde med alla flödestyper, element och funktioner som finns i Flow Builder, inklusive Einstein och Agentforce för flöde: Hantera flöde
          Visa inställningar och komma åt felsökningsloggar: Visa installation och konfiguration
          Visa, behålla och ta bort felsökningsloggar och ange spårningsflagg: Visa all data

          Salesforce tillämpar en enskild CPU-tidsgräns på 10 000 millisekunder (10 sekunder) per synkron transaktion. Varje del av automatiseringen i den transaktionen, som Apex utlösare, flöden, arbetsflödesregler och processer, hämtas från samma budget. Om annan automatisering konsumerar det mesta av budgeten först kan även ett optimerat flöde misslyckas. Utförandeordningen beror på flödestyp. För den fullständiga ordern, se Utlösare och Utförandeordning.

          • Flöden innan sparande körs tidigare i ordningen än flöden efter sparande.
          • Apex utlösare körs före eller efter flöden beroende på deras utlösartyp.

          Felsöka och optimera flöden som uppnår CPU-tidsgränser:

          • Förstå de vanliga mönster som orsakar CPU-gränsfel
          • Identifiera vilka element som konsumerar mest CPU-tid
          • Tillämpa optimeringstekniker för att minska processoranvändning
          • Implementera förebyggande riktlinjer för att undvika CPU-gränsfel

          Problem, lösningar och förebyggande tekniker för CPU-gränsfel

          Identifiera vanliga problem med processorgränser, tillämpa lösningar och följ förebyggande tekniker för att undvika Apex_CPU_TIME_LIMIT_EXCEEDED-fel.

          Denna tabell ger en referens för att felsöka CPU-gränsfel. Varje rad beskriver ett vanligt problem, lösningen för att åtgärda det och tekniker för att förhindra det i framtida flöden. Börja med att avgöra om något av dessa problem gäller för ditt flöde. Om ingen gäller hämtas en annan automatisering i samma transaktion—som en Apex, ett annat flöde eller en arbetsflödesregel—från samma CPU-budget och kan vara orsaken. För att identifiera vad som konsumerar CPU över hela transaktionen, gå igenom Apex felsökningsloggar. Mer information finns i Felsökningsloggar.

          Problem Lösning Förebyggande teknik

          DML-operationer (Data Manipulation Language) inuti loopar

          Att utföra operationerna Skapa poster, Uppdatera poster eller Ta bort poster inuti en loopväg upptar processortid med varje upprepning. Att bearbeta flera poster en åt gången kan snabbt uttömma gränsen.

          Exempel: Ett flöde går igenom 100 säljprojekt och använder ett Skapa poster-element inuti loopen för att skapa en uppgift för varje säljprojekt, vilket resulterar i 100 separata DML-operationer.

          Använd operationer för samlingsbaserat datamanipulationsspråk (DML)

          I loopen, använd Tilldelning-element för att lägga till poster till en postsamlingsvariabel. När loopen är klar, använd ett enskilt element för Skapa poster, Uppdatera poster eller Ta bort poster för att bearbeta hela samlingen samtidigt. Detta tillvägagångssätt kallas buntning.

          Exempel: Loopa igenom säljprojekt, använd ett tilldelningselement för att bygga en uppgift för varje säljprojekt. Använd sedan ett annat tilldelningselement för att lägga till varje uppgift till en samlingsvariabel. Efter loopen, använd ett Skapa poster-element för att skapa alla uppgifter samtidigt.

          Mer information finns Flödesbuntning i transaktioner.

          Placera aldrig DML-operationer inuti loopar. Utforma alltid flöden för att samla in poster i en samlingsvariabel under loopen och utför sedan DML när loopen är färdig.

          Flera sökfrågor inuti loopar

          Elementen Hämta poster inuti en loop tar lång tid, särskilt när du frågar stora objekt eller använder komplexa filter.

          Exempel: Ett flöde går igenom konton och använder Hämta poster inuti loopen för att hämta relaterade kontakter för varje konto, vilket resulterar i en sökfråga per konto.

          Fråga data innan loopar

          Innan loopen, använd ett enskilt Hämta poster-element och använd funktionen Hämta relaterade poster för att hämta alla nödvändiga data med lämpliga filter. Under loopen, använd de insamlade data istället för att fråga efter varje upprepning. Om du inte kan använda ett enskilt Hämta poster-element, använd ett Hämta poster-element för att hämta de primära posterna. Använd sedan ett annat Hämta poster-element för att hämta de sekundära posterna. Filtrera de sekundära posterna med ett postfält, operatoren I och den första samlingen Hämta poster. Till exempel Konto-ID > I > Konton från Hämta konton.

          Exempel: Hämta först alla relaterade kontakter med ett Hämta poster-element som filtrerar efter konto-ID och referera sedan till kontaktsamlingen under loopen.

          Undvik sökfrågor inuti loopar. Få alla nödvändiga data innan du går in i loopen.

          Komplexa formler i loopar

          Tilldelningselement som kör komplexa formelberäkningar på varje loopupprepning ackumulerar CPU-tid, särskilt med strängmanipulation, datumberäkningar eller kapslade funktioner.

          Exempel: Ett flöde går igenom 500 poster och varje upprepning utför flera formelberäkningar för att derivera fältvärden.

          Förenkla formler

          Dela upp komplexa formler i enklare steg. Beräkna värden som inte ändras utanför loopen. Undvik kapslade funktioner när så är möjligt. Överväg att använda formelfält på objektet istället för flödesformler.

          För åtgärder för hela samlingar—som filtrering, mappning eller sortering—fungerar ett Transformera-element mer effektivt än en loop. För att få alla relaterade poster i en enda sökfråga istället för en sökfråga per loop-upprepning, använd ett Hämta poster-element med operatoren IN.

          Mer information finns i Transformera element.

          Förenkla formler och flytta beräkningar som inte ändras utanför loopen. Testa formelprestanda med realistiska datavolymer.

          Bearbeta stora postsamlingar

          Schemalagda flöden eller batchoperationer som bearbetar tusentals poster i en enskild transaktion, även med korrekt buntning, kan ta för mycket CPU-tid.

          Exempel: Ett schemalagt flöde hämtar 5000 kontoposter och utför komplexa transformationer av varje posts data innan de uppdateras.

          Använd alternativa metoder

          För stora datavolymer, överväg:

          • Dela upp arbetet i flera schemalagda flöden som varje bearbetar en underuppsättning poster
          • Använda Apex batchbearbetning för extrema datavolymer
          • Bearbeta poster stegvis över tid
          • Använda plattformshändelser för att distribuera bearbetning över flera transaktioner

          Filtrera data tidigt för att minska antalet poster som behandlas. Använd filtren Hämta poster för att endast hämta de poster du behöver. Testa med realistiska datavolymer innan du distribuerar till produktion.

          Flera flöden i en transaktion

          När ett flöde utlöser andra flöden (genom poständringar eller underflöden) räknas den kumulativa CPU-tiden för alla flöden i transaktionen mot gränsen.

          Exempel: Ett postutlöst flöde för kontouppdateringar kör flera underflöden och utlöser även andra postutlösta flöden för relaterade objekt.

          Minska flödeskedjor

          Slå samman relaterad automatisering till färre flöden. Gå igenom dina flödesutlösarkriterier för att säkerställa att flöden endast körs vid behov. Överväg att använda inmatningsvillkor för att begränsa när postutlösta flöden körs.

          Gå igenom den kumulativa påverkan av all automatisering (flöden, processer, arbetsflöden, utlösare) som kan köras i samma transaktion. Övervaka och optimera hela automatiseringskedjan.

          Massdataladdningar

          Postutlösta flöden som körs under massimport eller massuppdateringar kräver effektiv bearbetning av alla poster. Ineffektiva flöden når processorgränser under massoperationer även om de fungerar bra för enskilda poster.

          Exempel: En användare importerar 200 kontoposter. Det postutlösta flödet innan sparande utför flera sökningar och beräkningar för varje konto.

          Optimera för massåtgärder

          • Använd samlingsbaserad DML och sökfrågor
          • Överväg flöden efter sparande för icke-kritiska åtgärder (de körs asynkront och har högre CPU-gränser)
          • Använd transformeringselement (Filter, Karta, Sortera) som fungerar på hela samlingar mer effektivt än loopar

          Mer information finns i Transformera element.

          Anta alltid att postutlösta flöden bearbetar flera poster samtidigt. Testa med massinläsningar av data (genom att använda Data Loader eller massuppdateringar) innan distribuering till produktion. Om det inte är korrekt utformat kan ett flöde som fungerar perfekt för enskilda poster misslyckas under massåtgärder om det inte är korrekt utformat.

          Allmänna riktlinjer för förebyggande

          • Övervaka flödesprestanda: Granska Apex felsökningsloggar regelbundet för att identifiera flöden som närmar sig CPU-gränser, även om de inte har misslyckats ännu. Regelbunden övervakning hjälper dig optimera flöden innan de orsakar produktionsproblem.
          • Testa med realistiska data: Testa flöden med realistiska datavolymer för att upptäcka prestandaproblem innan aktivering. Felsökningsläget testar vanligtvis med en post, vilket inte avslöjar problem med massåtgärder.
          • Beslut om dokumentoptimering: Använd elementbeskrivningar för att notera var du tillämpade buntning eller andra optimeringar. Denna dokumentation hjälper framtida ansvariga att förstå designen och förhindrar oavsiktlig introduktion av prestandaproblem.
          • Börja enkelt och optimera: Bygg flöden i små steg och testa prestandan i varje steg. Att optimera ett fungerande flöde är enklare än att fixa ett komplext trasigt.

          Identifiera CPU-intensiva element i ett flöde

          Använd Apex felsökningsloggar för att precisera vilka element i ditt flöde som konsumerar mest CPU-tid.

          1. Gå till Inställningar och skriv Felsökningsloggar i rutan Snabbsökning.
          2. Konfigurera felsökningsloggning för användaren som upplever felet, eller kör flödet i felsökningsläge.
          3. Återge felet genom att köra flödet.
          4. Öppna den felsökningslogg som skapas.
          5. Sök efter dessa nyckelhändelser i felsökningsloggen.
            • FLOW_CREATE_INTERVIEW_BEGIN - Visar när varje flöde startar
            • FLOW_ELEMENT_LIMIT_USAGE - Visar CPU-tidsåtgång för varje flödeselement
            • CUMULATIVE_LIMIT_USAGE - Visar total CPU-tid som körs
          6. Identifiera element med höga värden för CPU-tid.
            Vanliga gärningsmän inkluderar:
            • Loopelement med stora samlingar.
            • Hämta poster-element med komplexa filter.
            • DML-operationer med flera poster (Skapa poster, Uppdatera poster, Ta bort poster).
            • Tilldelningselement med komplexa formler.

          Du vet nu vilka element som konsumerar mest CPU-tid. Använd denna information för att tillämpa målinriktade optimeringar.

          Mer information om felsökningsloggar finns i Arbeta med loggar i Developer Console.

           
          Laddar
          Salesforce Help | Article