Loading
Automatiser dine forretningsprocesser
Indhold
Vælg filtre

          Ingen resultater
          Ingen resultater
          Her er nogle søgetips

          Kontroller stavemåden for dine søgeord.
          Brug mere generelle søgeudtryk.
          Vælg færre filtre for at gøre søgningen bredere.

          Søg efter alle i Hjælp til Salesforce
          Fejlfind Apex_CPU_TIME_LIMIT_EXCEEDED-fejl i forløb

          Fejlfind Apex_CPU_TIME_LIMIT_EXCEEDED-fejl i forløb

          Når en transaktion bruger for meget CPU-tid, stiller Salesforce en Apex_CPU_TIME_LIMIT_EXCEEDED-fejl. Forløb deler denne grænse med alle andre automatiseringer i den samme transaktion, herunder Apex.

          EditionsHeading

          Vis understøttede versioner.
          Brugertilladelser påkrævet
          Hvis du vil åbne, redigere, oprette, aktivere eller deaktivere et forløb ved brug af alle forløbstyper, elementer og funktioner, der er tilgængelige i Flow Builder, herunder Einstein og Agentforce for Flow: Administrer forløb
          Hvis du vil se Opsætning og få adgang til fejlretningslogfiler: Vis opsætning og konfiguration
          Hvis du vil have vist, bevare og slette fejlretningslogfiler og angive sporingsflag: Vis alle data

          Salesforce håndhæver en enkelt CPU-tidsgrænse på 10.000 millisekunder (10 sekunder) pr. synkron transaktion. Hvert stykke automatisering i denne transaktion, f.eks. Apex, forløb, arbejdsflowregler og processer, trækker fra det samme budget. Hvis anden automatisering forbruger det meste af budgettet først, kan selv et optimeret forløb mislykkes. Kørselsrækkefølgen afhænger af forløbstypen. For den fulde ordre, se Udløsere og Execution Order.

          • Før lagring-forløb kører tidligere i rækkefølgen end efter lagring-forløb.
          • Apex kører før eller efter forløb afhængigt af deres udløsertype.

          Hvis du vil fejlfinde og optimere forløb, der når CPU-tidsgrænser:

          • Forstå de almindelige mønstre, der forårsager CPU-grænsefejl
          • Identificer, hvilke elementer der bruger mest CPU-tid
          • Anvend optimeringsteknikker til at reducere CPU-forbrug
          • Implementer forebyggende retningslinjer for at undgå CPU-grænsefejl

          Problemer, løsninger og forebyggelsesteknikker for CPU-grænsefejl

          Identificer almindelige CPU-begrænsningsproblemer, anvend løsninger og følg forebyggelsesteknikker for at undgå Apex_CPU_TIME_LIMIT_EXCEEDED-fejl.

          Denne tabel giver en reference til fejlfinding af CPU-grænsefejl. Hver række beskriver et almindeligt problem, løsningen på det og teknikker til at forhindre det i fremtidige forløb. Start med at bestemme, om nogen af disse problemer gælder for dit forløb. Hvis ingen anvendes, trækkes der en anden automatisering i den samme transaktion – f.eks. en Apex, et andet forløb eller en arbejdsflowregel – fra det samme CPU-budget og kan være skyldig. Hvis du vil identificere, hvad der forbruger CPU på tværs af hele transaktionen, skal du gennemse Apex. Se Fejlretningslogfiler for at få flere oplysninger.

          Problem Løsning Forebyggelsesteknik

          Data Manipulation Language (DML)-handlinger i løkker

          Udførelse af Opret registreringer-, Opdater registreringer- eller Slet registreringer-handlinger i en løkkesti bruger CPU-tid med hver gentagelse. Behandling af flere registreringer en ad gangen kan hurtigt udfylde grænsen.

          Eksempel: Et forløb kører gennem 100 salgsmuligheder og bruger et Opret registreringer-element i løkken til at oprette en opgave for hver salgsmulighed, hvilket resulterer i 100 separate DML-handlinger.

          Brug samlingsbaserede DML-handlinger (data manipulation language)

          I løkken skal du bruge tildelingselementer til at føje registreringer til en registreringssamlingsvariabel. Når løkken er fuldført, skal du bruge et enkelt Opret registreringer-, Opdater registreringer- eller Slet registreringer-element til at behandle hele samlingen på en gang. Denne tilgang kaldes massebehandling.

          Eksempel: Kør i løkke gennem salgsmuligheder, og brug et tildelingselement til at opbygge en opgave for hver salgsmulighed. Brug derefter et andet tildelingselement til at føje hver opgave til en samlingsvariabel. Efter løkken skal du bruge et Opret registreringer-element til at oprette alle opgaver på en gang.

          Se Forløbsmassebehandling i transaktioner for at få flere oplysninger.

          Placer aldrig DML-handlinger i løkker. Design altid forløb til at indsamle registreringer i en samlingsvariabel under løkken, og udfør derefter DML, når løkken er fuldført.

          Flere forespørgsler i løkker

          Hent registreringer-elementer i en løkke forbruger betydelig CPU-tid, især når du forespørger på store objekter eller bruger komplekse filtre.

          Eksempel: Et forløb kører gennem konti og bruger Hent registreringer i løkken til at få relaterede kontakter for hver konto, hvilket resulterer i en forespørgsel pr. konto.

          Forespørg på data før løkker

          Før løkken skal du bruge et enkelt Hent registreringer-element og bruge Hent relaterede registreringer-funktionaliteten til at hente alle nødvendige data med relevante filtre. Under løkken skal du bruge de indsamlede data i stedet for at forespørge på hver gentagelse. Hvis du ikke kan bruge et enkelt Hent registreringer-element, skal du bruge et Hent registreringer-element til at hente de primære registreringer. Brug derefter et andet Hent registreringer-element til at hente de sekundære registreringer. Filtrer de sekundære registreringer ved brug af et registreringsfelt, operatoren I og den første Hent registreringer-samling. F.eks. Konto-id > I > Konti fra Hent konti.

          Eksempel: Først skal du hente alle relaterede kontakter med et Hent registreringer-element, der filtrerer efter konto-id'er, og derefter henvise til kontaktsamlingen under løkken.

          Undgå forespørgsler i løkker. Hent alle nødvendige data, før du starter løkken.

          Komplekse formler i løkke

          Tildelingselementer, der kører komplekse formelberegninger på hver løkkeiteration, akkumulerer CPU-tid, især med strengmanipulation, datoberegninger eller indlejrede funktioner.

          Eksempel: Et forløb kører gennem 500 registreringer, og hver gentagelse udfører flere formelberegninger for at aflede feltværdier.

          Forenkl formler

          Opdel komplekse formler i enklere trin. Beregn værdier, der ikke ændres uden for løkken. Undgå indlejrede funktioner, når det er muligt. Overvej at bruge formelfelter på objektet i stedet for forløbsformler.

          For handlinger på hele samlinger – f.eks. filtrering, tilknytning eller sortering – klarer et transformeringselement sig mere effektivt end en løkke. Hvis du vil hente alle relaterede registreringer i en enkelt forespørgsel i stedet for en forespørgsel pr. løkke-iteration, skal du bruge et Hent registreringer-element med IN-operatoren.

          Se Transformer element for at få flere oplysninger.

          Gør formler enkle, og flyt beregninger, der ikke ændres uden for løkken. Test formelydeevne med realistiske datamængder.

          Behandling af store registreringssamlinger

          Planlagte forløb eller batchhandlinger, der behandler tusindvis af registreringer i en enkelt transaktion, selv med korrekt massebehandling, kan forbruge for meget CPU-tid.

          Eksempel: Et planlagt forløb henter 5.000 kontoregistreringer og udfører komplekse transformationer på hver registrerings data, før du opdaterer dem.

          Brug alternative tilgange

          For store datamængder kan du overveje:

          • Opdel arbejdet i flere planlagte forløb, hvor hvert behandler et undersæt af registreringer
          • Brug af Apex til ekstreme datamængder
          • Behandler registreringer trinvist over tid
          • Brug af platformsbegivenheder til at distribuere behandling på tværs af flere transaktioner

          Filtrer data tidligt for at reducere antallet af behandlede registreringer. Brug Hent registreringer-filtre til kun at hente de registreringer, du har brug for. Test med realistiske datamængder, før du implementerer til produktion.

          Flere forløb i en transaktion

          Når et forløb udløser andre forløb (gennem registreringsændringer eller underforløb), tæller den akkumulerede CPU-tid for alle forløb i transaktionen med i grænsen.

          Eksempel: Et registreringsudløst forløb på kontoopdateringer kører flere underforløb og udløser også andre registreringsudløste forløb på relaterede objekter.

          Reducer forløbskæder

          Konsolider relateret automatisering i færre forløb. Gennemse dine forløbsudløserkriterier for at sikre, at forløb kun kører, når det er nødvendigt. Overvej at bruge indtastningsbetingelser til at begrænse, hvornår registreringsudløste forløb køres.

          Gennemse den akkumulerede påvirkning af al automatisering (forløb, processer, arbejdsflows, udløsere), der kan køre i den samme transaktion. Overvåg og optimer hele automatiseringskæden.

          Bulk dataindlæsninger

          Registreringsudløste forløb, der køres under massedataimporter eller masseopdateringer, kræver effektiv behandling af alle registreringer. Ineffektive forløb når CPU-grænser under massehandlinger, selvom de fungerer fint for individuelle registreringer.

          Eksempel: En bruger importerer 200 kontoregistreringer. Det før lagring-registreringsudløste forløb udfører flere opslag og beregninger for hver konto.

          Optimer til masseoperationer

          • Brug samlingsbaseret DML og forespørgsler
          • Overvej efter lagring-forløb for ikke-kritiske handlinger (de kører asynkront og har højere CPU-grænser)
          • Brug transformeringselementer (filtrering, kort, sortering), der fungerer på hele samlinger mere effektivt end løkker

          Se Transformer element for at få flere oplysninger.

          Antag altid, at registreringsudløste forløb behandler flere registreringer samtidigt. Test med massedataindlæsninger (ved brug af Data Loader eller masseopdateringer), før du implementerer til produktion. Hvis det ikke er korrekt designet, kan et forløb, der fungerer perfekt for individuelle registreringer, mislykkes under massehandlinger, hvis det ikke er korrekt designet.

          Generelle retningslinjer for forebyggelse

          • Overvåg flowydelse: Gennemse Apex regelmæssigt for at identificere forløb, der nærmer sig CPU-grænser, selvom de endnu ikke har mislykkedes. Almindelig overvågning hjælper dig med at optimere forløb, før de forårsager produktionsproblemer.
          • Test med realistiske data: Test forløb med realistiske datamængder for at afdække ydelsesproblemer før aktivering. Fejlretningstilstand tester typisk med en registrering, hvilket ikke afslører problemer med massehandling.
          • Beslutninger for optimering af dokumenter: Brug elementbeskrivelser til at notere, hvor du har anvendt massebehandling eller andre optimeringer. Denne dokumentation hjælper fremtidige vedligeholdere med at forstå designet og forhindrer utilsigtet introduktion af ydeevneproblemer.
          • Start enkelt og optimer: Opbyg forløb i små trin, og test ydeevnen ved hvert trin. Optimering af et arbejdsflow er nemmere end at rette et komplekst brudt arbejdsflow.

          Identificer CPU-intensive elementer i et forløb

          Brug Apex til at finde ud af, hvilke elementer i dit forløb der bruger mest CPU-tid.

          1. Gå til Opsætning og skriv Debug Logs i feltet Find hurtigt.
          2. Opsæt fejlretningslogføring for den bruger, der oplever fejlen, eller kør forløbet i fejlretningstilstand.
          3. Genafejl ved at køre forløbet.
          4. Åbn den genererede fejlretningslog.
          5. Søg efter disse nøglebegivenheder i fejlretningsloggen.
            • FLOW_CREATE_INTERVIEW_BEGIN - Viser, hvornår hvert forløb starter
            • FLOW_ELEMENT_LIMIT_USAGE - Viser CPU-tidsforbrug for hvert forløbselement
            • CUMULATIVE_LIMIT_USAGE - Viser kørende totaler af CPU-tid
          6. Identificer elementer med høje CPU-tidsværdier.
            Almindelige skyldige omfatter:
            • Løkkeelementer med store samlinger.
            • Hent registreringer-elementer med komplekse filtre.
            • DML-handlinger med flere registreringer (Opret registreringer, Opdater registreringer, Slet registreringer).
            • Tildelingselementer med komplekse formler.

          Du ved nu, hvilke elementer der bruger mest CPU-tid. Brug disse oplysninger til at anvende målrettede optimeringer.

          Hvis du ønsker flere oplysninger om fejlretningslogfiler, kan du se Arbejde med logfiler på Developer Console.

           
          Indlæser
          Salesforce Help | Article