netsuite
Bestuur
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()
});
});