수색…


비고

통치

"거버넌스"는 NetSuite의 장기 실행, 과도기 또는 자원 집약적 스크립트를 탐지하고 중지하는 시스템에 부여 된 이름입니다.

각 스크립트 유형에는 통제 범위를 초과 할 수 없으며 각 스크립트 유형에 대해 네 가지 유형의 관리 제한이 있습니다.

  • API 사용 한도
  • 명령 수 제한
  • 제한 시간 한도
  • 메모리 사용 한도

스크립트가이 네 가지 영역 중 하나 에서 거버넌스 제한을 초과하면 NetSuite는 발견 할 수 없는 예외를 throw 하고 스크립트를 즉시 종료합니다.

API 사용 한도

NetSuite는 "사용 단위"를 기반으로 한 시스템으로 스크립트의 API 사용을 제한합니다. 일부 NetSuite API 호출, 특히 데이터베이스에서 읽기 또는 쓰기 작업을 수행하는 호출은 호출 될 때마다 특정 개수의 유닛을 필요로합니다. 각 스크립트 유형에는 스크립트를 실행할 때마다 사용할 수있는 최대 단위 수가 있습니다.

스크립트가 API 사용 제한을 초과하면 NetSuite는 SSS_USAGE_LIMIT_EXCEEDED 오류를 발생시켜 스크립트를 종료합니다.

다음은 일반적인 작업에 대한 단위 비용의 몇 가지 예입니다. 거버넌스 비용의 전체 목록은 NetSuite 도움말에서 "API 거버넌스"라는 제목의 기사를 참조하십시오.

조작 단가
저장된 검색로드하기 5
검색 결과 가져 오기 10
작업 스케줄링 10
URL 요청 10
이메일 보내기 10
사용자 정의 레코드 만들기 2
직원 레코드 만들기 5
판매 오더 레코드 생성 10
사용자 정의 레코드 저장하기 4
대화 상대 레코드 저장 중 10
구매 주문서 기록 저장 20

다른 조작은 다른 양의 단위를 사용하며, 특정 조작은 사용되는 레코드 유형에 따라 다른 금액을 소비합니다. 함수의 비용이 많은 유닛의 수는 클수록 일반적으로 실행하는 데 더 오래 걸립니다.

트랜잭션은 레코드 유형 중 가장 크기 때문에 작업 할 때 가장 많은 비용이 소요됩니다. 반대로 사용자 지정 레코드는 매우 가볍기 때문에 많은 단위 비용이 들지 않습니다. 고객, 직원 또는 담당자와 같은 트랜잭션이 아닌 표준 NetSuite 레코드는 비용면에서 두 가지 사이에 있습니다.

스크립트 유형별 사용 제한은 다음과 같습니다.

스크립트 유형 사용 한도
고객 1,000
사용자 이벤트 1,000
스위트 렛 1,000
포틀릿 1,000
워크 플로 작업 1,000
RESTlet 5,000
예정 10,000
지도 / 축소 10,000
번들 설치 10,000
대량 업데이트 1 레코드 당 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 오류를 발생시켜 스크립트를 종료합니다.

선언 된 모든 변수, 정의 된 모든 함수, 저장된 모든 객체는 스크립트의 메모리 사용에 기여합니다.

Scheduled ScriptMap / Reduce Script 는 모두 50MB 메모리 제한을 문서화했습니다. 또한 RESTlet에 전달되거나 RESTlet에서 반환 된 문자열의 크기에 대한 문서화 된 제한은 10MB 입니다. 주어진 스크립트에 대한 특정 제한에 대한 다른 문서는 없습니다.

얼마나 남았습니까?

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에서는 N/runtime 모듈의 Script 객체에 대한 getRemainingUsage 메소드를 사용합니다.

// 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