治理

治理

Governance 是 NetSuite 用於檢測和暫停長時間執行,失控或資源密集型指令碼的系統的名稱。

每種指令碼型別都具有不能超過的治理限制,並且每種指令碼型別都有四種型別的治理限制。

  • API 使用限制
  • 指令計數限制
  • 超時限制
  • 記憶體使用限制

如果指令碼在這四個區域中的任何一個區域中超出其治理限制,NetSuite 將丟擲一個無法捕獲的異常並立即終止該指令碼。

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 的記錄是交易,如客戶,僱員或隱形眼鏡,在成本方面坐在介於兩者之間。

這些是指令碼型別的使用限制:

指令碼型別 使用限制
客戶 1000
使用者事件 1000
Suitelet 1000
門戶 1000
工作流程動作 1000
Restlet 5000
計劃
Map / Reduce
繫結安裝
批量更新 每條記錄 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 錯誤來終止你的指令碼。

宣告的每個變數,每個定義的函式,每個儲存的 Object 都會影響指令碼的記憶體使用量。

無論是計劃的指令碼的 Map / Reduce 指令碼已經證明 50MB 記憶體限制。對於傳入 RESTlet 或從 RESTlet 返回的任何 String 的大小,還有檔案限制的 10MB。沒有關於給定指令碼的特定限制的其他文件。