Ricerca…


Osservazioni

Governance

"Governance" è il nome dato al sistema NetSuite per il rilevamento e l'interruzione di script a esecuzione prolungata, in esecuzione o ad uso intensivo delle risorse.

Ogni tipo di script ha limiti di governance che non può superare e sono disponibili quattro tipi di limiti di governance per ogni tipo di script.

  • Limite di utilizzo dell'API
  • Limite di conteggio delle istruzioni
  • Limite di timeout
  • Limite di utilizzo della memoria

Se uno script supera il limite di governance in una qualsiasi di queste quattro aree, NetSuite genererà un'eccezione impenibile e interromperà immediatamente lo script.

Limite di utilizzo API

NetSuite limita l'utilizzo dell'API degli script con un sistema basato su "unità di utilizzo". Alcune chiamate API NetSuite, in particolare quelle che eseguono un'azione di lettura o scrittura sul database, costano un numero specifico di unità ogni volta che vengono richiamate. Ogni tipo di script ha quindi un numero massimo di unità che possono essere utilizzate durante ogni esecuzione dello script.

Se uno script supera il limite di utilizzo dell'API, NetSuite termina lo script SSS_USAGE_LIMIT_EXCEEDED un errore SSS_USAGE_LIMIT_EXCEEDED .

Di seguito sono riportati alcuni esempi di costi unitari per le operazioni comuni. Per un elenco completo dei costi di governance, consultare l'articolo intitolato "Governance API" nella Guida di NetSuite.

operazione Costo unitario
Caricamento di una ricerca salvata 5
Recupero dei risultati di ricerca 10
Pianificazione di un'attività 10
Richiesta di un URL 10
Invio di un'email 10
Creare un record personalizzato 2
Creazione di un record dipendente 5
Creazione di un record dell'ordine di vendita 10
Salvataggio di un record personalizzato 4
Salvataggio di un record di contatto 10
Salvataggio di un record dell'ordine d'acquisto 20

Diverse operazioni utilizzano quantità diverse di unità e alcune operazioni costano un importo diverso in base al tipo di record utilizzato. Maggiore è il numero di unità a cui una funzione costa, in genere più tempo ci vorrà per eseguire.

Le transazioni sono il più grande dei tipi di record, quindi lavorare con loro costa la maggior quantità di unità. Viceversa, i record personalizzati sono molto leggeri e quindi non costano molte unità. I record NetSuite standard che non sono Transazioni, come Clienti, Dipendenti o Contatti, si collocano tra i due in termini di costi.

Questi sono i limiti di utilizzo per tipo di script:

Tipo di script Limite di utilizzo
Cliente 1.000
Evento utente 1.000
Suitelet 1.000
Portlet 1.000
Azione del flusso di lavoro 1.000
Restlet 5.000
In programma 10.000
Riduci mappa 10.000
Installazione del pacchetto 10.000
Aggiornamento di massa 10.000 per record

Limiti di timeout e di conteggio delle istruzioni

NetSuite utilizza inoltre il sistema di governance per rilevare e bloccare gli script di fuga utilizzando un meccanismo di timeout e un contatore di istruzioni.

Se uno script impiega troppo tempo per essere eseguito, NetSuite lo interrompe SSS_TIME_LIMIT_EXCEEDED un errore SSS_TIME_LIMIT_EXCEEDED .

Inoltre, gli script di fuga possono essere rilevati e fermati in base al loro "Conteggio istruzioni". Se i limiti del conteggio delle istruzioni definiti vengono superati, NetSuite interromperà lo script SSS_INSTRUCTION_COUNT_EXCEEDED un errore SSS_INSTRUCTION_COUNT_EXCEEDED .

Sfortunatamente non esiste una documentazione della Guida che definisca:

  • il timeout per ogni tipo di script
  • i limiti del conteggio delle istruzioni per ogni tipo di script
  • cosa costituisce una singola "istruzione"

È semplicemente importante sapere che se si verifica l'errore SSS_TIME_LIMIT_EXCEEDED o l'errore SSS_INSTRUCTION_COUNT_EXCEEDED in uno dei propri script, l'elaborazione richiede troppo tempo. Focalizza la tua indagine sulle strutture del tuo loop per determinare dove possono essere fatte le ottimizzazioni.

Limite di utilizzo della memoria

Se lo script supera il limite di utilizzo della memoria, NetSuite interromperà lo script SSS_MEMORY_USAGE_EXCEEDED un errore SSS_MEMORY_USAGE_EXCEEDED .

Ogni variabile dichiarata, ogni funzione definita, ogni oggetto memorizzato contribuisce all'utilizzo della memoria del tuo script.

Sia lo script programmato che la mappa / lo script di riduzione hanno documentato i limiti di memoria di 50MB . Esiste anche un limite documentato di 10MB per la dimensione di qualsiasi stringa passata o restituita da un RESTlet. Non c'è altra documentazione sui limiti specifici per un determinato script.

Quante unità rimango?

In SuiteScript 1.0, utilizzare nlobjContext.getRemainingUsage() per recuperare le unità rimanenti. Un riferimento nlobjContext viene recuperato utilizzando la funzione globale nlapiGetContext .

// 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());

In SuiteScript 2.0, utilizzare il metodo getRemainingUsage dell'oggetto Script del modulo N/runtime .

// 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow