Apex_CPU_TIME_LIMIT_EXCEEDED -virheiden vianmääritys kuluissa
Kun transaktio kuluttaa liikaa CPU-aikaa, Salesforce lähettää Apex_CPU_TIME_LIMIT_EXCEEDED -virheen. Kulut jakavat tämän rajoituksen muiden saman transaktion automaatioiden kanssa, mukaan lukien Apex.
Vaaditut versiot
| Näytä tuetut Edition-versiot. |
| Tarvittavat käyttöoikeudet | |
|---|---|
| Kulun avaaminen, muokkaaminen, luominen, aktivointi tai deaktivointi käyttämällä kaikkia Flow Builderissa käytettävissä olevia kulkutyyppejä, elementtejä ja ominaisuuksia, mukaan lukien Einstein ja Agentforce for Flow: | Kulkujen hallintaoikeus |
| Määritysten tarkasteleminen ja virheenkorjauslokien käyttäminen: | Määritysten ja kokoonpanon tarkasteluoikeus |
| Virheenkorjauslokien tarkasteleminen, säilyttäminen ja poistaminen sekä seurantalippujen määrittäminen: | Kaikkien tietojen tarkasteluoikeus |
Salesforce käyttää yhden prosessorin aikarajaa 10 000 millisekuntia (10 sekuntia) per synkronoitu tapahtuma. Jokainen kyseisen transaktion automatisointi, kuten Apex, kulut, työnkulkusäännöt ja prosessit, saadaan samasta budjetista. Jos muu automatisointi kuluttaa eniten budjettia ensin, jopa optimoitu kulku voi epäonnistua. Suoritusjärjestys riippuu kulun tyypistä. Katso koko tilaus kohdasta Käynnistimet ja suoritusjärjestys.
- Ennen tallennusta kulut suoritetaan aiemmin järjestyksessä kuin tallennuksen jälkeiset kulut.
- Apex suoritetaan ennen tai jälkeen kulkuja, riippuen niiden käynnistimen tyypistä.
CPU-aikarajoituksia ylittävien kulkujen vianmääritys ja optimointi:
- Tutustu yleisimpiin kuvioihin, jotka aiheuttavat CPU-rajoitusvirheitä
- Tunnista mitkä elementit kuluttavat eniten CPU-aikaa
- Käytä optimointitekniikoita vähentääksesi CPU:n kulutusta
- Toteuta ennaltaehkäiseviä ohjeita välttyäksesi CPU-rajoitusvirheiltä
- CPU-virheiden rajoittamisen ongelmat, ratkaisut ja ehkäisymenetelmät
Tunnista yleiset CPU-rajoitusongelmat, käytä ratkaisuja ja noudata ehkäisymenetelmiä välttyäksesi Apex_CPU_TIME_LIMIT_EXCEEDED -virheiltä. - CPU-intensiivisten elementtien tunnistaminen kulussa
Käytä Apex löytääksesi kulkusi elementit, jotka kuluttavat eniten CPU-aikaa.
Katso myös:
CPU-virheiden rajoittamisen ongelmat, ratkaisut ja ehkäisymenetelmät
Tunnista yleiset CPU-rajoitusongelmat, käytä ratkaisuja ja noudata ehkäisymenetelmiä välttyäksesi Apex_CPU_TIME_LIMIT_EXCEEDED -virheiltä.
Tämä taulukko tarjoaa viitteen CPU-rajoitusvirheiden vianmääritykseen. Jokainen rivi kuvaa yleisen ongelman, ratkaisun sen ratkaisemiseksi ja tekniikoita sen estämiseksi tulevissa kuluissa. Aloita määrittämällä, koskevatko nämä ongelmat kulkuasi. Jos mikään ei ole käytössä, saman transaktion toinen automatisointi — kuten Apex, toinen kulku tai työnkulkusääntö — saadaan samasta CPU-budjetista ja voi olla syy. Tarkasta Apex nähdäksesi, mitä prosessori kuluttaa koko transaktion aikana. Lisätietoja on kohdassa Virheenkorjauslokit.
| Ongelma | Ratkaisu | Ennaltaehkäisymenetelmä |
|---|---|---|
Datan manipuloinnin kieli (DML) ‐toiminnot silmukoissa Luo tietueita-, Päivitä tietueita- tai Poista tietueita -toimintojen suorittaminen silmukan polussa kuluttaa CPU-aikaa jokaisella iteroinnilla. Useiden tietueiden käsittely kerralla voi tyhjentää rajoituksen nopeasti. Esimerkki: Kulku silmukoi 100 mahdollisuutta läpi ja käyttää silmukan sisäistä Luo tietueita -elementtiä luodakseen tehtävän jokaiselle mahdollisuudelle, jolloin se luo 100 erillistä DML-operaatiota. |
Kokoelmaan perustuvan datan manipulointikielen (DML) käyttäminen Käytä silmukan sisäpuolella Kohdistus-elementtejä lisätäksesi tietueita tietueiden kokoelmamuuttujaan. Kun silmukka on valmis, käytä yhtä Luo tietueita-, Päivitä tietueita- tai Poista tietueita -elementtiä käsitelläksesi koko kokoelman kerralla. Tätä lähestymistapaa kutsutaan bulkkaamiseksi. Esimerkki: Selaa mahdollisuuksia ja käytä kohdistuselementtiä laatiaksesi tehtävän jokaiselle mahdollisuudelle. Käytä sitten toista kohdistuselementtiä lisätäksesi jokaisen tehtävän kokoelmamuuttujaan. Käytä silmukan jälkeen Luo tietueita -elementtiä luodaksesi kaikki tehtävät kerralla. Lisätietoja on kohdassa Kulkujen bulkkaaminen transaktioissa. |
Älä koskaan aseta DML-operaatioita silmukoiden sisään. Suunnittele kulkuja kerätäksesi kokoelmamuuttujassa olevia tietueita silmukan aikana ja suorita sitten DML, kun silmukka on valmis. |
Sulkeissa olevat useat kyselyt Tietueiden kerääminen silmukan sisään kuluttaa paljon CPU-aikaa, varsinkin kun kyselet suuria objekteja tai käytät monimutkaisia suodattimia. Esimerkki: Kulku silmukkii tilit läpi ja käyttää Nouda tietueita silmukan sisällä noutaakseen asiaankuuluvia yhteyshenkilöitä kullekin tilille, jolloin yksi kysely per tili. |
Datan kyseleminen ennen silmukoita Käytä ennen silmukkaa yhtä Nouda tietueita -elementtiä ja käytä hanki asiaan liittyviä tietueita -toimintoa saadaksesi kaikki tarvittavat tiedot asiaankuuluvilla suodattimilla. Käytä silmukan aikana kerättyä dataa kunkin iteroinnin kyselemisen sijaan. Jos et voi käyttää yhtä Nouda tietueita -elementtiä, käytä Nouda tietueita -elementtiä ensisijaisten tietueiden noutamiseen. Käytä sitten toista Nouda tietueita -elementtiä noutaaksesi toissijaiset tietueet. Suodata toissijaisia tietueita käyttämällä tietuekenttää, Sisältyy-operaattoria ja ensimmäistä Nouda tietueita -kokoelmaa. Esimerkiksi Tilin tunnus > Sisältyy > Tilit Nouda tilejä -osiosta. Esimerkki: Hae ensin kaikki asiaan liittyvät yhteyshenkilöt Nouda tietueita -elementillä, joka suodattaa tilien tunnusten perusteella, ja viittaa sitten yhteyshenkilöiden kokoelmaan silmukan aikana. |
Vältä silmukoiden sisäisiä kyselyitä. Hanki kaikki tarvittavat tiedot ennen silmukan käyttämistä. |
Monimutkaiset kaavat silmukoissa Kohdistuselementit, jotka suorittavat monimutkaisia kaavojen laskutoimia jokaiselle silmukan iteroinnille, keräävät CPU-aikaa, ehkä merkkijonojen manipuloinnin, päivämäärälaskentojen tai sisäkkäisten funktioiden avulla. Esimerkki: Kulku silmukoi 500 tietuetta, ja jokainen iterointi suorittaa useita kaavojen laskutoimia kenttäarvojen muodostamiseksi. |
Kaavojen yksinkertaistaminen Jaa monimutkaiset kaavat yksinkertaisempiin vaiheisiin. Laske arvot, jotka eivät muutu silmukan ulkopuolella. Vältä sisäkkäisiä funktioita aina, kun se on mahdollista. Harkitse kaavakenttien käyttämistä objektissa kulkujen kaavojen sijaan. Muunna-elementti toimii tehokkaammin kuin silmukka kokoelmien toiminnoissa — kuten suodattaminen, kartoittaminen tai lajittelu. Jos haluat noutaa kaikki asiaan liittyvät tietueet yhdestä kyselystä yhden kyselyn sijaan silmukan iterointia kohti, käytä Nouda tietueita -elementtiä IN-operaattorilla. Lisätietoja on kohdassa Muunna elementti. |
Yksinkertaista kaavoja ja siirrä laskutoimia, jotka eivät muutu silmukan ulkopuolelle. Testaa kaavojen suorituskykyä realististen datamäärien avulla. |
Suurien tietueiden kokoelmien käsittely Ajoitetut kulut tai erätoiminnot, jotka käsittelevät tuhansia tietueita yhdessä tapahtumassa, voivat kuluttaa liikaa CPU-aikaa, vaikka ne olisi bulkattu oikein. Esimerkki: Ajoitettu kulku saa 5 000 tilitietuetta ja suorittaa monimutkaisia transformaatioita kunkin tietueen datalle ennen niiden päivittämistä. |
Alternatiivisten lähestymistapojen käyttäminen Kun käytät suuria datamääriä, ota huomioon:
|
Suodata dataa ajoissa vähentääksesi käsiteltyjen tietueiden määrää. Käytä Nouda tietueita -suodattimia saadaksesi vain tarvitsemasi tietueet. Testaa todellisia datamääriä ennen käyttöönottoa tuotantoympäristössä. |
Useat kulut transaktiossa Kun yksi kulku käynnistää muita kulkuja (tietueiden muutosten tai alakulkujen kautta), transaktion kaikkien kulkujen kumulatiivinen CPU-aika lasketaan rajoitukseen. Esimerkki: Tilipäivitysten tietueiden käynnistämä kulku suorittaa useita alakulkuja ja käynnistää myös muita asiaan liittyvien objektien tietueiden käynnistämät kulut. |
Vähennä kulkuketjuja Yhdistä asiaan liittyvä automatisointi vähemmille kuluille. Tarkasta kulunkäynnistimen ehdot varmistaaksesi, että kulut suoritetaan vain tarvittaessa. Sinun kannattaa käyttää syöttöehtoja rajoittaaksesi tietueiden käynnistämien kulkujen suorituskertoja. |
Tutustu kaikkien automaatioiden (kulkujen, prosessien, työnkulkujen, käynnistimien) kumulatiivisiin vaikutuksiin, jotka voivat tapahtua samassa transaktiossa. Valvo ja optimoi koko automatisoinnin ketjua. |
Joukkolataukset Tietueiden käynnistämät kulut, jotka suoritetaan joukkodatan tuonnin tai joukkopäivitysten aikana, vaativat kaikkien tietueiden tehokkaan käsittelyn. Ei-aktiiviset kulut saavuttavat CPU-rajoituksia joukkotoimintojen aikana, vaikka ne toimisivat hyvin yksittäisille tietueille. Esimerkki: Käyttäjä tuo 200 tilitietuetta. Ennen tallennusta tietueiden käynnistämä kulku suorittaa useita hakuja ja laskutoimia kullekin tilille. |
Optimointi joukkotoiminnoille
Lisätietoja on kohdassa Muunna elementti. |
Oletetaan aina, että tietueiden käynnistämät kulut käsittelevät useita tietueita samanaikaisesti. Testaa joukkolatauksilla (käyttämällä Data Loaderia tai joukkopäivityksiä) ennen kuin otat sen käyttöön tuotantoympäristössä. Jos se ei ole suunniteltu oikein, yksittäisille tietueille täydellisesti toimiva kulku voi epäonnistua joukkotoimintojen aikana, jos se ei ole suunniteltu oikein. |
Yleisiä ennaltaehkäisyohjeita
- Valvo kulun suorituskykyä: Tarkasta Apex säännöllisesti tunnistaaksesi kulut, jotka lähestyvät CPU-rajoituksia, vaikka ne eivät olisi epäonnistuneet vielä. Säännöllinen valvonta auttaa sinua optimoimaan kulut ennen kuin ne aiheuttavat ongelmia tuotantoympäristössä.
- Testaa realistisella datalla: Testaa kulkuja, joissa on todellisia datamääriä, löytääksesi suorituskykyongelmia ennen aktivointia. Virheenkorjaustila testaa tavallisesti yhtä tietuetta, mikä ei paljasta joukkotoimintojen ongelmia.
- Asiakirjojen optimoinnin päätökset: Käytä elementin kuvauksia huomataksesi, missä käytit bulkkausta tai muita optimointeja. Tämä dokumentaatio auttaa tulevia ylläpitäjiä ymmärtämään suunnittelun ja estää suorituskykyongelmien vahingossa.
- Aloita yksinkertaisesti ja optimoi: Rakenna kulkuja pieninä osina ja testaa suorituskykyä jokaisessa vaiheessa. Työnkulun optimointi on helpompaa kuin monimutkaisen rikkinäisen korjaaminen.
CPU-intensiivisten elementtien tunnistaminen kulussa
Käytä Apex löytääksesi kulkusi elementit, jotka kuluttavat eniten CPU-aikaa.
- Avaa Määritykset ja kirjoita Pikahaku-kenttään Virheenkorjauslokit.
- Määritä virheenkorjauslokien kirjaaminen käyttäjälle, joka kokee virheen, tai suorita kulku Virheenkorjaus-tilassa.
- Toista virhe suorittamalla kulku.
- Avaa luotu virheenkorjausloki.
-
Hae nämä tärkeimmät tapahtumat virheenkorjauslokista.
FLOW_CREATE_INTERVIEW_BEGIN– Näyttää, milloin kukin kulku käynnistyyFLOW_ELEMENT_LIMIT_USAGE- Näyttää kunkin kulun elementin CPU-ajan kulutuksenCUMULATIVE_LIMIT_USAGE- Näyttää suorituksen kokonaispituuden
-
Tunnista elementit, joilla on korkeat CPU-aikojen arvot.
Yleisiin syyllisyyteen sisältyy:
- Silmukkaelementtejä, joilla on suuria kokoelmia.
- Nouda tietueita, joilla on monimutkaisia suodattimia.
- DML-operaatiot, joissa on useita tietueita (Luo tietueita, Päivitä tietueita, Poista tietueita).
- Kohdistuselementit, joilla on monimutkaisia kaavoja.
Nyt tiedät, mitkä elementit kuluttavat eniten CPU-aikaa. Käytä näitä tietoja käyttääksesi kohdennettuja optimointeja.
Lisätietoja virheenkorjauslokeista on kohdassa Lokien käyttäminen Developer Consolessa.

