Поиск…


замечания

управление

«Управление» - это имя, присвоенное системе NetSuite для обнаружения и остановки длительных, беглых или ресурсоемких сценариев.

Каждый тип сценария имеет ограничения на управление, которые он не может превышать, и существует четыре типа ограничений управления для каждого типа сценария.

  • Предел использования API
  • Предел подсчета команд
  • Предел ожидания
  • Предел использования памяти

Если скрипт превышает лимит управления в любой из этих четырех областей, NetSuite выдает исключение, исключающее возможность, и немедленно прекращает выполнение сценария.

Ограничение использования API

NetSuite ограничивает использование API ваших скриптов системой, основанной на «единицах использования». Некоторые вызовы API NetSuite, особенно те, которые выполняют операцию чтения или записи в базе данных, требуют определенного количества единиц при каждом вызове. Каждый тип скрипта имеет максимальное количество единиц, которые могут использоваться во время каждого исполнения скрипта.

Если сценарий превышает лимит использования API, NetSuite завершает сценарий, SSS_USAGE_LIMIT_EXCEEDED ошибку SSS_USAGE_LIMIT_EXCEEDED .

Ниже приведены несколько примеров удельных затрат на общие операции. Полный список расходов на управление см. В статье под названием «Управление API» в справке NetSuite.

операция Себестоимость единицы продукции
Загрузка сохраненного поиска 5
Получение результатов поиска 10
Планирование задачи 10
Запрос URL-адреса 10
Отправка сообщения электронной почты 10
Создание пользовательской записи 2
Создание записи сотрудника 5
Создание записи заказа клиента 10
Сохранение пользовательской записи 4
Сохранение записи контакта 10
Сохранение записи о заказе на поставку 20

В разных операциях используются разные количества единиц, а некоторые операции различаются в зависимости от используемого типа записи. Чем больше количество единиц, на которые стоит функция, тем больше времени потребуется для выполнения.

Транзакции являются самыми большими из типов записей, поэтому работа с ними стоит на самом большом количестве единиц. И наоборот, пользовательские записи очень легкие и, следовательно, не стоят многих единиц. Стандартные записи NetSuite, которые не являются транзакциями, такие как клиенты, сотрудники или контакты, находятся между ними в стоимостном выражении.

Это ограничения использования по типу сценария:

Тип скрипта Предел использования
клиент 1000
Пользовательское событие 1000
Suitelet 1000
портлетов 1000
Действие рабочего процесса 1000
Restlet 5000
по расписанию 10000
Уменьшение карты 10000
Установка пучка 10000
Массовое обновление 10 000 за запись

Ограничения на тайм-аут и инструкцию

NetSuite также использует систему управления для обнаружения и остановки сценариев убегания с использованием механизма тайм-аута и счетчика команд.

Если сценарий занимает слишком много времени для запуска, NetSuite остановит его, выбросив ошибку SSS_TIME_LIMIT_EXCEEDED .

Кроме того, сценарии убегания могут быть обнаружены и остановлены в соответствии с их «количеством команд». Если превышены лимиты ограничения заданных инструкций, NetSuite остановит сценарий, выбросив ошибку SSS_INSTRUCTION_COUNT_EXCEEDED .

К сожалению, нет справочной документации, которая определяет:

  • таймаут для каждого типа скрипта
  • лимиты подсчета команд для каждого типа скрипта
  • что составляет единую «инструкцию»,

Просто важно знать, что если вы столкнулись с ошибкой SSS_TIME_LIMIT_EXCEEDED или SSS_INSTRUCTION_COUNT_EXCEEDED ошибкой в ​​одном из ваших сценариев, у вас есть обработка, которая занимает слишком много времени. Сосредоточьте свое исследование на структурах циклов, чтобы определить, где могут быть сделаны оптимизации.

Ограничение использования памяти

Если ваш скрипт превышает ограничение использования памяти, NetSuite завершит ваш скрипт, выбросив ошибку SSS_MEMORY_USAGE_EXCEEDED .

Каждая объявленная переменная, каждая функция, определенная, каждый сохраненный объект способствует использованию памяти вашего скрипта.

50MB сценарий и сценарий « Карта / Уменьшение» документировали ограничения на 50MB памяти. Существует также документированный предел в 10MB для размера любой строки, переданной или возвращенной из RESTlet. Нет другой документации по конкретным ограничениям для данного сценария.

Сколько единиц у меня осталось?

В SuiteScript 1.0 используйте nlobjContext.getRemainingUsage() для извлечения оставшихся единиц. Ссылка nlobjContext извлекается с использованием глобальной функции 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());

В SuiteScript 2.0 используйте метод getRemainingUsage для объекта Script объекта 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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow