Buscar..


Observaciones

Gobernancia

"Gobernanza" es el nombre que recibe el sistema de NetSuite para detectar y detener scripts de larga ejecución, fugitivos o que requieren un uso intensivo de recursos.

Cada tipo de secuencia de comandos tiene límites de gobernabilidad que no pueden exceder, y existen cuatro tipos de límites de gobernabilidad para cada tipo de secuencia de comandos.

  • Límite de uso de API
  • Límite de cuenta de instrucción
  • Límite de tiempo de espera
  • Límite de uso de memoria

Si una secuencia de comandos supera su límite de gobernabilidad en cualquiera de estas cuatro áreas, NetSuite lanzará una excepción que no se puede atrapar y terminará la secuencia de comandos inmediatamente.

Límite de uso de API

NetSuite limita el uso de API de sus scripts con un sistema basado en "unidades de uso". Algunas llamadas a la API de NetSuite, particularmente las que realizan una acción de lectura o escritura en la base de datos, cuestan un número específico de unidades cada vez que se invocan. Cada tipo de script tiene un número máximo de unidades que se pueden usar durante cada ejecución del script.

Si un script excede su límite de uso de API, NetSuite termina el script lanzando un error SSS_USAGE_LIMIT_EXCEEDED .

A continuación se muestran algunos ejemplos de costos unitarios para operaciones comunes. Para obtener una lista exhaustiva de los costos de gobierno, consulte el artículo titulado "Gobierno de API" en la Ayuda de NetSuite.

Operación Costo unitario
Cargando una búsqueda guardada 5
Recuperando Resultados de Búsqueda 10
Programar una tarea 10
Solicitando una URL 10
Enviando un correo electrónico 10
Creando un registro personalizado 2
Creación de un registro de empleado 5
Creación de un registro de pedido de venta 10
Guardando un registro personalizado 4
Guardar un registro de contacto 10
Guardar un registro de orden de compra 20

Las diferentes operaciones utilizan diferentes cantidades de unidades, y ciertas operaciones cuestan una cantidad diferente según el tipo de registro que se utiliza. Cuanto mayor sea el número de unidades que cuesta una función, por lo general, más tardará en ejecutarse.

Las transacciones son las más grandes de los tipos de registros, por lo que trabajar con ellas cuesta la mayor cantidad de unidades. Por el contrario, los registros personalizados son muy ligeros y, por lo tanto, no cuestan muchas unidades. Los registros estándar de NetSuite que no son Transacciones, como Clientes, Empleados o Contactos, se ubican entre los dos en términos de costo.

Estos son los límites de uso por tipo de script:

Tipo de script Límite de uso
Cliente 1,000
Evento de usuario 1,000
Suitelet 1,000
Portlet 1,000
Acción de flujo de trabajo 1,000
RESTlet 5,000
Programado 10,000
Mapa reducido 10,000
Instalación del paquete 10,000
Actualización masiva 10,000 por registro

Límites de tiempo de espera e instrucción

NetSuite también usa el sistema de gobierno para detectar y detener scripts fuera de control mediante el uso de un mecanismo de tiempo de espera y un contador de instrucciones.

Si un script tarda demasiado en ejecutarse, NetSuite lo detendrá lanzando un error SSS_TIME_LIMIT_EXCEEDED .

Además, los scripts fuera de control se pueden detectar y detener en función de su "Recuento de instrucciones". Si se exceden los límites de recuento de instrucciones definidos, NetSuite detendrá la secuencia de comandos al lanzar un error SSS_INSTRUCTION_COUNT_EXCEEDED .

Desafortunadamente, no hay documentación de ayuda que defina:

  • el tiempo de espera para cada tipo de script
  • los límites de conteo de instrucciones para cada tipo de script
  • lo que constituye una sola "instrucción"

Simplemente es importante saber que si encuentra el error SSS_TIME_LIMIT_EXCEEDED o el error SSS_INSTRUCTION_COUNT_EXCEEDED en uno de sus scripts, el proceso se está demorando demasiado. Enfoque su investigación en sus estructuras de bucle para determinar dónde se pueden realizar las optimizaciones.

Límite de uso de memoria

Si su script excede el límite de uso de memoria, NetSuite terminará su script lanzando un error SSS_MEMORY_USAGE_EXCEEDED .

Cada variable declarada, cada función definida, cada Objeto almacenado contribuye al uso de memoria de su script.

Tanto la secuencia de comandos programada como la secuencia de comandos de mapa / reducción han documentado límites de memoria de 50MB . También hay un límite documentado de 10MB para el tamaño de cualquier Cadena pasada o devuelta desde un RESTlet. No hay otra documentación sobre los límites específicos para un script dado.

¿Cuántas unidades me quedan?

En SuiteScript 1.0, use nlobjContext.getRemainingUsage() para recuperar las unidades restantes. Una referencia nlobjContext se recupera utilizando la función global 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());

En SuiteScript 2.0, use el método getRemainingUsage del objeto Script del módulo 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow