netsuite
Gouvernance
Recherche…
Remarques
Gouvernance
La «gouvernance» est le nom donné au système de NetSuite pour détecter et arrêter les scripts de longue durée, emballés ou nécessitant beaucoup de ressources.
Chaque type de script a des limites de gouvernance qu'il ne peut pas dépasser et il existe quatre types de limites de gouvernance pour chaque type de script.
- Limite d'utilisation de l'API
- Limite du nombre d'instructions
- Limite de temporisation
- Limite d'utilisation de la mémoire
Si un script dépasse sa limite de gouvernance dans l'un de ces quatre domaines, NetSuite lance une exception insaisissable et termine immédiatement le script.
Limite d'utilisation de l'API
NetSuite limite l'utilisation de l'API de vos scripts avec un système basé sur des "unités d'utilisation". Certains appels d'API NetSuite, en particulier ceux qui exécutent une action de lecture ou d'écriture sur la base de données, coûtent un nombre spécifique d'unités à chaque appel. Chaque type de script dispose alors d'un nombre maximal d'unités pouvant être utilisé lors de chaque exécution du script.
Si un script dépasse la limite d'utilisation de l'API, NetSuite termine le script en SSS_USAGE_LIMIT_EXCEEDED
une erreur SSS_USAGE_LIMIT_EXCEEDED
.
Vous trouverez ci-dessous quelques exemples de coûts unitaires pour les opérations courantes. Pour obtenir une liste exhaustive des coûts de gouvernance, consultez l'article intitulé «Gouvernance des API» dans l'aide de NetSuite.
Opération | Coût unitaire |
---|---|
Chargement d'une recherche enregistrée | 5 |
Récupération des résultats de recherche | 10 |
Planification d'une tâche | 10 |
Demander une URL | 10 |
Envoi d'un email | 10 |
Créer un enregistrement personnalisé | 2 |
Création d'un enregistrement d'employé | 5 |
Création d'un enregistrement de commande client | 10 |
Enregistrement d'un enregistrement personnalisé | 4 |
Enregistrement d'un enregistrement de contact | 10 |
Enregistrement d'un enregistrement de commande d'achat | 20 |
Différentes opérations utilisent des quantités d’unités différentes et certaines opérations coûtent un montant différent en fonction du type d’enregistrement utilisé. Plus le nombre d'unités par fonction est élevé, plus le délai d'exécution est généralement long.
Les transactions sont les plus importantes des types d’enregistrements. Travailler avec elles coûte donc le plus grand nombre d’unités. À l'inverse, les enregistrements personnalisés sont très légers et ne coûtent donc pas beaucoup d'unités. Les enregistrements NetSuite standard qui ne sont pas des transactions, tels que les clients, les employés ou les contacts, se situent entre les deux en termes de coût.
Voici les limites d'utilisation par type de script:
Type de script | Limite d'utilisation |
---|---|
Client | 1000 |
Événement utilisateur | 1000 |
Suitelet | 1000 |
Portlet | 1000 |
Action de workflow | 1000 |
RESTlet | 5000 |
Prévu | 10 000 |
Carte / Réduire | 10 000 |
Installation groupée | 10 000 |
Mise à jour de masse | 10 000 par enregistrement |
Limites de délai d'expiration et d'instruction
NetSuite utilise également le système de gouvernance pour détecter et arrêter les scripts en cours d'exécution en utilisant un mécanisme de temporisation et un compteur d'instructions.
Si l'exécution d'un script prend trop de temps, NetSuite l'arrêtera en lançant une erreur SSS_TIME_LIMIT_EXCEEDED
.
En outre, les scripts d’exécution peuvent être détectés et arrêtés en fonction de leur «nombre d’instructions». Si les limites du nombre d'instructions définies sont dépassées, NetSuite arrête le script en SSS_INSTRUCTION_COUNT_EXCEEDED
une erreur SSS_INSTRUCTION_COUNT_EXCEEDED
.
Il n'y a malheureusement pas de documentation d'aide définissant:
- le délai d'attente pour chaque type de script
- les limites de comptage des instructions pour chaque type de script
- ce qui constitue une seule "instruction"
Il est simplement important de savoir que si vous rencontrez l'erreur SSS_TIME_LIMIT_EXCEEDED
ou l'erreur SSS_INSTRUCTION_COUNT_EXCEEDED
dans l'un de vos scripts, le traitement prend trop de temps. Focalisez votre enquête sur vos structures de boucle pour déterminer les optimisations possibles.
Limite d'utilisation de la mémoire
Si votre script dépasse la limite d'utilisation de la mémoire, NetSuite mettra fin à votre script en SSS_MEMORY_USAGE_EXCEEDED
une erreur SSS_MEMORY_USAGE_EXCEEDED
.
Chaque variable déclarée, chaque fonction définie, chaque objet stocké contribue à l'utilisation de la mémoire de votre script.
Le script programmé et le script Map / Reduce ont tous deux des limites de mémoire documentées de 50MB
Il existe également une limite documentée de 10MB
pour la taille de toute chaîne transmise ou renvoyée par un RESTlet. Il n'y a pas d'autre documentation sur les limites spécifiques d'un script donné.
Combien reste-t-il d'appareils?
Dans SuiteScript 1.0, utilisez nlobjContext.getRemainingUsage()
pour récupérer les unités restantes. Une référence nlobjContext
est extraite à l'aide de la fonction 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());
Dans SuiteScript 2.0, utilisez la méthode getRemainingUsage
de l'objet Script
du module 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()
});
});