netsuite
Zarządzanie
Szukaj…
Uwagi
Zarządzanie
„Zarządzanie” to nazwa nadana systemowi NetSuite do wykrywania i zatrzymywania długo działających, niekontrolowanych lub wymagających znacznych zasobów skryptów.
Każdy typ skryptu ma limity zarządzania, których nie może przekroczyć, a dla każdego typu skryptu istnieją cztery rodzaje limitów zarządzania.
- Limit użycia interfejsu API
- Limit liczby instrukcji
- Limit czasu
- Limit wykorzystania pamięci
Jeśli skrypt przekroczy limit zarządzania w którymkolwiek z tych czterech obszarów, NetSuite zgłosi niemożliwy do uchwycenia wyjątek i natychmiast zakończy skrypt.
Limit użycia interfejsu API
NetSuite ogranicza użycie API twoich skryptów w systemie opartym na „jednostkach użycia”. Niektóre wywołania interfejsu API NetSuite, szczególnie te, które wykonują operację odczytu lub zapisu w bazie danych, kosztują określoną liczbę jednostek za każdym razem, gdy są wywoływane. Każdy typ skryptu ma wówczas maksymalną liczbę jednostek, których można użyć podczas każdego wykonania skryptu.
Jeśli skrypt przekroczy limit użycia interfejsu API, NetSuite kończy skrypt, SSS_USAGE_LIMIT_EXCEEDED
błąd SSS_USAGE_LIMIT_EXCEEDED
.
Poniżej znajduje się kilka przykładów kosztów jednostkowych dla typowych operacji. Wyczerpująca lista kosztów zarządzania znajduje się w artykule zatytułowanym „Zarządzanie API” w Pomocy NetSuite.
Operacja | Cena jednostkowa |
---|---|
Ładowanie zapisanego wyszukiwania | 5 |
Pobieranie wyników wyszukiwania | 10 |
Planowanie zadania | 10 |
Żądanie adresu URL | 10 |
Wysyłanie wiadomości e-mail | 10 |
Tworzenie niestandardowego rekordu | 2 |
Tworzenie rekordu pracownika | 5 |
Tworzenie rekordu zamówienia sprzedaży | 10 |
Zapisywanie niestandardowego rekordu | 4 |
Zapisywanie rekordu kontaktu | 10 |
Zapisywanie rekordu zamówienia zakupu | 20 |
Różne operacje używają różnych ilości jednostek, a niektóre operacje kosztują inną kwotę w zależności od użytego typu rekordu. Im większa liczba jednostek kosztuje daną funkcję, zwykle tym dłużej zajmie wykonanie.
Transakcje są największymi z typów rekordów, więc praca z nimi kosztuje największą liczbę jednostek. I odwrotnie, niestandardowe rekordy są bardzo lekkie, a zatem nie kosztują wielu jednostek. Standardowe rekordy NetSuite, które nie są transakcjami, takie jak klienci, pracownicy lub osoby kontaktowe, znajdują się pomiędzy nimi pod względem kosztów.
Są to limity użycia według typu skryptu:
Rodzaj skryptu | Limit użytkowania |
---|---|
Klient | 1000 |
Zdarzenie użytkownika | 1000 |
Suitelet | 1000 |
Portlet | 1000 |
Działanie przepływu pracy | 1000 |
RESTlet | 5000 |
Planowy | 10 000 |
Mapa / Zmniejsz | 10 000 |
Instalacja pakietu | 10 000 |
Aktualizacja masowa | 10 000 na rekord |
Limity czasu oczekiwania i instrukcji
NetSuite wykorzystuje również system zarządzania do wykrywania i zatrzymywania niekontrolowanych skryptów za pomocą mechanizmu limitu czasu i licznika instrukcji.
Jeśli uruchomienie skryptu zajmuje zbyt dużo czasu, NetSuite zatrzyma go, SSS_TIME_LIMIT_EXCEEDED
błąd SSS_TIME_LIMIT_EXCEEDED
.
Ponadto niekontrolowane skrypty można wykryć i zatrzymać na podstawie ich „Liczby instrukcji”. Jeśli zdefiniowane limity liczby instrukcji zostaną przekroczone, NetSuite zatrzyma skrypt, SSS_INSTRUCTION_COUNT_EXCEEDED
błąd SSS_INSTRUCTION_COUNT_EXCEEDED
.
Niestety nie istnieje dokumentacja pomocy, która określa:
- limit czasu dla każdego typu skryptu
- limity liczby instrukcji dla każdego typu skryptu
- co stanowi pojedynczą „instrukcję”
Po prostu ważne jest, aby wiedzieć, że jeśli napotkasz błąd SSS_TIME_LIMIT_EXCEEDED
lub błąd SSS_INSTRUCTION_COUNT_EXCEEDED
w jednym ze swoich skryptów, przetwarzanie trwa zbyt długo. Skoncentruj swoje dochodzenie na strukturach pętli, aby określić, gdzie można dokonać optymalizacji.
Limit wykorzystania pamięci
Jeśli skrypt przekroczy limit użycia pamięci, NetSuite zakończy skrypt, SSS_MEMORY_USAGE_EXCEEDED
błąd SSS_MEMORY_USAGE_EXCEEDED
.
Każda deklarowana zmienna, każda zdefiniowana funkcja, każdy przechowywany obiekt przyczynia się do wykorzystania pamięci przez skrypt.
Zarówno Skrypt Zaplanowany, jak i Skrypt Mapuj / Zmniejsz mają udokumentowane limity pamięci 50MB
. Istnieje również udokumentowany limit 10MB
dla rozmiaru dowolnego ciągu przekazywanego lub zwracanego z RESTletu. Nie ma innej dokumentacji dotyczącej określonych limitów dla danego skryptu.
Ile pozostało mi jednostek?
W SuiteScript 1.0 użyj nlobjContext.getRemainingUsage()
aby pobrać pozostałe jednostki. Odwołanie nlobjContext
jest pobierane za pomocą globalnej funkcji 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());
W SuiteScript 2.0 użyj metody getRemainingUsage
obiektu Script
modułu 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()
});
});