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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow