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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow