Zoeken…


Opmerkingen

Bestuur

"Governance" is de naam die wordt gegeven aan het systeem van NetSuite voor het detecteren en stoppen van langlopende, weggelopen of resource-intensieve scripts.

Elk scripttype heeft governance-limieten die het niet kan overschrijden, en er zijn vier typen governance-limieten voor elk scripttype.

  • API gebruikslimiet
  • Instructietelling limiet
  • Time-out limiet
  • Limiet geheugengebruik

Als een script de governance-limiet in een van deze vier gebieden overschrijdt, genereert NetSuite een niet- vangbare uitzondering en wordt het script onmiddellijk beëindigd.

API gebruikslimiet

NetSuite beperkt het API-gebruik van uw scripts met een systeem op basis van "gebruikseenheden". Sommige NetSuite API-aanroepen, met name degenen die een lees- of schrijfactie op de database uitvoeren, kosten een specifiek aantal eenheden telkens wanneer ze worden aangeroepen. Elk scripttype heeft dan een maximaal aantal eenheden dat kan worden gebruikt tijdens elke uitvoering van het script.

Als een script de API-gebruikslimiet overschrijdt, beëindigt NetSuite het script door een SSS_USAGE_LIMIT_EXCEEDED fout te SSS_USAGE_LIMIT_EXCEEDED .

Hieronder vindt u enkele voorbeelden van eenheidskosten voor algemene bewerkingen. Zie het artikel met de titel "API Governance" in de Help van NetSuite voor een volledige lijst van Governance-kosten.

Operatie Kosten per eenheid
Een opgeslagen zoekopdracht laden 5
Zoekresultaten ophalen 10
Een taak plannen 10
Verzoek om een URL 10
E-mail versturen 10
Een aangepast record maken 2
Een werknemersrecord maken 5
Een klantorderrecord maken 10
Een aangepast record opslaan 4
Een contactpersoonrecord opslaan 10
Een inkooporderrecord opslaan 20

Verschillende bewerkingen gebruiken verschillende hoeveelheden eenheden, en bepaalde bewerkingen kosten een andere hoeveelheid op basis van het gebruikte recordtype. Hoe groter het aantal eenheden dat een functie kost, meestal duurt het langer om uit te voeren.

Transacties zijn de grootste van de recordtypen, dus ermee werken kost het grootste aantal eenheden. Omgekeerd zijn aangepaste records zeer licht van gewicht en kosten ze dus niet veel eenheden. Standaard NetSuite-records die geen transacties zijn, zoals klanten, werknemers of contactpersonen, zitten qua kosten tussen de twee.

Dit zijn de gebruiksbeperkingen per scripttype:

Scripttype Gebruikslimiet
Cliënt 1000
Gebruiker Evenement 1000
Suitelet 1000
portlet 1000
Werkstroomactie 1000
Restlet 5000
geplande 10.000
Map / Verkleinen 10.000
Bundelinstallatie 10.000
Massa-update 10.000 per record

Time-out en instructietellinglimieten

NetSuite gebruikt ook het governance-systeem om weggelopen scripts te detecteren en te stoppen met behulp van een time-outmechanisme en een instructieteller.

Als het uitvoeren van een script te lang duurt, zal NetSuite het stoppen door een SSS_TIME_LIMIT_EXCEEDED fout te SSS_TIME_LIMIT_EXCEEDED .

Bovendien kunnen weggelopen scripts worden gedetecteerd en gestopt op basis van hun "Instructietelling". Als de gedefinieerde limieten voor instructietellingen worden overschreden, stopt NetSuite het script door een SSS_INSTRUCTION_COUNT_EXCEEDED fout te SSS_INSTRUCTION_COUNT_EXCEEDED .

Er is helaas geen Help-documentatie die het volgende definieert:

  • de time-out voor elk scripttype
  • de instructietellinglimieten voor elk scripttype
  • wat een enkele "instructie" vormt

Het is gewoon belangrijk om te weten dat als u de SSS_TIME_LIMIT_EXCEEDED fout of de SSS_INSTRUCTION_COUNT_EXCEEDED fout in een van uw scripts tegenkomt, de verwerking te lang duurt. Richt uw onderzoek op uw lusstructuren om te bepalen waar optimalisaties kunnen worden aangebracht.

Limiet geheugengebruik

Als uw script de limiet voor geheugengebruik overschrijdt, beëindigt NetSuite uw script door een SSS_MEMORY_USAGE_EXCEEDED fout te maken.

Elke gedeclareerde variabele, elke gedefinieerde functie, elk opgeslagen object draagt bij aan het geheugengebruik van uw script.

Zowel het Geplande script als het Map / Reduce-script hebben 50 50MB geheugenlimieten gedocumenteerd. Er is ook een gedocumenteerde limiet van 10MB voor de grootte van een tekenreeks die wordt doorgegeven aan of geretourneerd vanuit een RESTlet. Er is geen andere documentatie over de specifieke limieten voor een bepaald script.

Hoeveel eenheden heb ik nog over?

Gebruik in SuiteScript 1.0 nlobjContext.getRemainingUsage() om de resterende eenheden op te halen. Een nlobjContext referentie wordt opgehaald met behulp van de globale nlapiGetContext functie.

// 1.0
var context = nlapiGetContext();
nlapiLogExecution("DEBUG", "Governance Monitoring", "Remaining Usage = " + context.getRemainingUsage());

nlapiSearchRecord("transaction"); // uses 10 units
nlapiLogExecution("DEBUG", "Governance Monitoring", "Remaining Usage = " + context.getRemainingUsage());

Gebruik in SuiteScript 2.0 de methode getRemainingUsage van het Script object van de N/runtime module.

// 2.0
require(["N/log", "N/runtime", "N/search"], function (log, runtime, s) {
    var script = runtime.getCurrentScript();
    log.debug({
        "title": "Governance Monitoring",
        "details": "Remaining Usage = " + script.getRemainingUsage()
    });

    s.load({"id":"customsearch_mysearch"}); // uses 5 units
    log.debug({
        "title": "Governance Monitoring",
        "details": "Remaining Usage = " + script.getRemainingUsage()
    });
});


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow