netsuite
통치
수색…
비고
통치
"거버넌스"는 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 Script 와 Map / 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()
});
});