ThingWorx Flow > 安裝與組態 > 配置 ThingWorx Flow > 調整與擴充 ThingWorx Flow Engine
調整與擴充 ThingWorx Flow Engine
ThingWorx Flow Engine 服務包含一些組態選項,可對 ThingWorx Flow 的效能及其工作流程的執行造成特別大的影響。您可在引擎模組的 deploymentConfig.json 檔案中找到這些選項。引擎 deploymentConfig.json 檔案範例如下所示:
{
"MAX_FLOW_RUN_TIME": 180000, // Only allows a workflow to run for up to 3 minutes.
"EXCHANGE_STATUS_CHECK_INTERVAL": 120000, // Checks if it can communicate with the Exchange service every 2 minutes.
"REFRESH_ON_INTERVAL_MINUTES": 60,
"ENGINE_PORT": 2006, // The port Engine will reserve for health check purposes
"ENGINE_HOST": "localhost", // The hostname Engine will reserve the port against
"SLEEP_BETWEEN_FLOW_EXECUTION": 3000, // Waits 3 seconds before a worker can execute the next workflow
"ENGINE_DATA_PATH": "C:/ThingWorxOrchestration/modules/cache", // Location where files are stored during workflow execution. Files are deleted once the workflow execution is complete.
"EXCHANGE": { // The host and port for the Exchange service that this Engine should communicate with
"HOST": "localhost",
"PORT": "7822"
},
"logLevel":"error", // valid levels are 'trace', 'debug', 'info', 'warn', and 'error'; default is 'error'
"QUEUE": {
"MAX_SOCKET": 100,
"QUEUE_CONSUMPTION_UNIT": {
"256": 1
},
"DEFAULT_FLOW_QUEUE": "256",
"ACTIVE_ADAPTER_DEFAULT": "amqp",
"ACTIVE_ADAPTER_FLOW": "amqp",
"ACTIVE_ADAPTER_STOP": "amqp",
"ACTIVE_ADAPTER_WEBHOOK": "amqp",
"ADAPTERS": {
"AMQP": {
"CONFIG": { // The host and port for the RabbitMQ server
"port": "5672",
"protocol": "amqp",
"host": "localhost",
"vhost": "orchestration",
"CHANNEL_MAX_FETCH": "5" // The maximum number of messages this Engine will fetch from the queue
},
"FLOW_QUEUE": {
"QUEUE_NAMES": {
"256m": "256mb"
},
"QUEUE_NAME": "256mb"
}
}
}
}
}
如果您變更其中任何一個組態選項,則必須使用適用於您作業系統的原生服務控制工具 (針對 Windows 為 Servicessc,針對 Red Hat Enterprise Linux 為 sysctl) 重新啟動 ThingWorxFlow 服務。
下表說明相關設定,並提供有關如何根據您的環境與系統資源進行配置的建議:
組態設定
描述
建議
CHANNEL_MAX_FETCH -
執行輸送量
類型 - 整數
預設 - 10
單位 - 總訊息數
可控制引擎服務將處理的工作流程執行訊息數上限。每當執行「工作流程」服務 (包括手動執行或使用觸發器的獨立工作流程) 時,ThingWorx Foundation 都會傳輸這些訊息。降低此數會限制引擎可以同時執行的工作流程數。
針對開發環境,請將此值設定為符合系統的核心數。
針對生產環境,請根據在相同電腦執行的其他服務數,將此值設定為介於核心數的 50% 到 200% 之間。
ENGINE_SIZE -
Worker 記憶體分配
類型 - 整數
預設 - 1802
單位 - MB (10242 個位元組)
表示引擎 Worker 流程可以為物件配置的記憶體量上限 (以 MB 為單位)。配置此值時,請考慮下列因素:
工作流程中的活動數。
內嵌運算式或 Node.js 動作的複雜度。
每個動作擷取或處理的資料量。
針對開發環境,請將其保留為預設值。
針對生產環境,請將 ENGINE_SIZE 的值設定為約為系統 RAM 的最大量除以 CHANNEL_MAX_FETCH 所用值的結果。
MAX_FLOW_RUN_TIME -
最長執行時間
類型 - 整數
預設 - 300000
單位 - 毫秒
可控制允許工作流程在每次執行時,以毫秒為單位的執行時間總數。此設定會阻止引擎 Worker 執行工作流程過長的一段時間。這個值會根據部署及所在網路環境而有所不同;但是,建議您將其保留為較低值,以免 Worker 長時間保持在無法使用的狀態,因為這可能會影響 ThingWorx Flow 的整體效能。在提供足夠的時間讓工作流程完成執行,以及保持足夠低的值以便讓引擎 Worker 盡快變為可用之間,您必須保持適當的平衡。
針對開發環境,請將其保留為預設值,或視需要將它變更為較長的一段時間,以進行偵錯。
針對生產環境,請將此值設定為您最長的執行工作流程長度加上 15%。
SLEEP_BETWEEN_FLOW_EXECUTION -
Worker 恢復期間
類型 - 整數
預設 - 3000
單位 - 毫秒
可在引擎 Worker 能夠執行工作流程之前,插入其他以毫秒為單位的延遲。這主要是用來允許作業系統重新取得已經取消的引擎 Worker 記憶體,進而允許不需要在工作流程執行之間共用記憶體空間便可提高環境安全性。
針對開發與大多數生產環境,請將此值設定為 0
針對擁有無法混合之敏感資訊的多用戶環境,請根據需要將此值保留為預設或予以增加。
所有值都無法保證作業系統已正確回收記憶體。
KILL_WORKER_AFTER_RUN -
在工作流程執行後取消引擎 Worker
類型 - 布林值
預設 - false
當執行工作流程時,引擎服務會建立 Worker 流程來處理工作流程的實際執行 (取決於 CHANNEL_MAX_FETCH 設定的值)。依預設,Worker 流程會保持使用中狀態來為其他執行請求提供服務。此設定可修改該行為,讓 Worker 流程在工作流程執行完成後立即終止。
針對開發與大多數生產環境,請將此值保留為預設。
針對擁有無法混合之敏感資訊的多用戶環境,建議將此值設定為 true
AVAILABLE_WORKER_CHECK_TRIES -
Worker 可用性重試計數
類型 - 整數
預設 - 10
單位 - 重試次數
如果所有 Worker 流程目前都在使用中,但工作流程請求為待處理,引擎服務會繼續嘗試將 Worker 流程保留針對 AVAILABLE_WORKER_CHECK_TRIES 配置的值次數。如果嘗試次數達到重試次數上限,引擎的執行請求會失敗。
針對開發目的,請將此值保留為預設。
針對生產環境,請將此值設定為合理的值,並與 AVAILABLE_WORKER_CHECK_INTERVAL 的值搭配使用。
理想情況下,您不會想要讓總延遲超過總請求服務時間約一半的時間。
AVAILABLE_WORKER_CHECK_INTERVAL
- Worker 可用性重試延遲
類型 - 整數
預設 - 3000
單位 - 毫秒
可在假設第一次嘗試失敗的情況下,決定引擎服務在嘗試保留工作流程執行的 Worker 流程之前等待的時間。
針對開發目的,請將此值保留為預設。
針對生產環境,請將此值設定為合理的值,並與 AVAILABLE_WORKER_CHECK_TRIES 的值搭配使用。
理想情況下,您不會想要讓總延遲超過總請求服務時間約一半的時間。
WORKER_DISMISS_INTERVAL -
Worker 流程減速延遲
類型 - 整數
預設 - 1800
單位 - 秒
指定引擎服務在開始終止 Worker 流程之前,等待其他工作的時間。如果 KILL_WORKER_AFTER_RUN 設定為 true,則會略過此值。
針對內部部署環境,請將此值保留為預設。
針對雲端部署或記憶體受限制的環境,您可以降低此值,在只會偶爾使用工作流程的情況下尤其如此。
這是否有幫助?