netsuite
управление
Поиск…
замечания
управление
«Управление» - это имя, присвоенное системе 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()
});
});