跳到內容
返回官網

EMS Builder 效能測試手冊

手冊版本: v1.1
目前統計規則: 計數取樣時額外擷取首尾 2 次,正式結果只統計中間樣本。

測試說明:本測試不接入真實儀表、PLC 或序列埠閘道器,統一使用 Modbus TCP 模擬裝置。測試結果表示 Edge-EMS Builder 在理想通訊條件下的處理能力,不表示真實現場的端到端效能。

測試內容 需要回答的問題
資料擷取 EMS Builder 每秒可以穩定處理多少點位?
Trigger Lua 任務能否按計畫執行?耗時是否穩定?
MQTT / 協作任務 任務數量是否達標?是否出現延遲或失敗?
資料儲存 即時儲存和變化儲存對效能有什麼影響?
系統資源 CPU、記憶體和磁碟是否接近上限?
穩定性 長時間執行是否崩潰、重新啟動或持續積壓?
負載 測試內容
資料擷取 從 20 個模擬 Slave 讀取點位
聚合運算 使用 Lua 對擷取資料進行計算
Trigger 定時執行 Lua 指令碼併產生寫入、告警和 MQTT 動作
MQTT 任務 定時產生並行布 MQTT 訊息
協作任務 執行裝置間共享與協作處理
資料儲存 儲存擷取資料、計算結果和任務記錄

2.2 Trigger 中每次 Lua 指令碼執行什麼?

Section titled “2.2 Trigger 中每次 Lua 指令碼執行什麼?”
內容 每次執行量 作用
基礎計算迴圈 100 次 執行數學計算、條件判斷、迴圈、字串和表操作
原始點寫入 2 次 分別寫入測試點 小数据0 和 小数据1
聚合點寫入 1 次 寫入測試聚合點 Agg
本機告警 2 次 產生兩條一級告警
MQTT 告警 1 次 產生一條二級 MQTT 告警
指標 計算 每秒
Lua 指令碼執行 Trigger任務:50个1s + 5个100ms = 100/s,Mqtt任務:50/s,聚合運算:50/s,共享任務:10/s 210 次
Trigger基礎計算迴圈 100 × 100 10,000 次
Trigger原始點寫入 100 × 2 200 次
Trigger聚合點寫入 100 × 1 100 次
Trigger本機告警 100 × 2 200 次
Trigger MQTT告警 100 × 1 100 次
Trigger全部寫入動作 100 × 6 600 次
MQTT訊息釋出 50 × 1 50次
資料變化觸發聚合運算 50 × 1 50次
資料共享任務 10 × 1 10次

計算方式:

Trigger 次數/秒 = 1s Trigger 數量 + 100ms Trigger 數量 × 10
場景 擷取點/秒 聚合 1s Trigger 100ms Trigger Trigger/秒 MQTT/秒 協作/秒 儲存 時長
S1 500 10 10 0 10 5 0 即時 30 分鐘
S2 2,000 20 20 2 40 10 2 即時 30 分鐘
S2.5 2,000 20 20 2 40 10 2 變化 30 分鐘
S3 5,000 30 50 4 90 20 10 即時 30 分鐘
S3.5 5,000 30 50 4 90 20 10 變化 30 分鐘
S4 10,000 30 100 10 200 40 20 變化 30 分鐘
S5 20,000 40 200 10 300 60 40 變化 30 分鐘
S6 5,000 20 50 10 150 30 15 即時 72 小時
儲存方式 說明
即時儲存 按設定儲存每次擷取結果
變化儲存 數值變化時立即儲存;數值不變時每 10 秒至少儲存一次

S5 用於尋找效能邊界;S6 必須實際執行 72 小時。

短時效能複測採用固定次數取樣,次數以對應批次報告為準。以下以每場景擷取 1,002 次、間隔 1 秒為例;AFE-E630 報告 v1.3 使用 2,002 次擷取、2,000 次有效樣本:

第 1 次:邊界樣本,不統計
第 2~1001 次:正式樣本,共 1,000 次
第 1002 次:邊界樣本,不統計

正式報告必須從 raw_data 按 sample_no 篩選,不能直接使用工作簿 summary 工作表中包含首尾樣本的全量彙總值。

如果執行完整 30 分鐘測試且取樣間隔為 1 秒,應擷取 1,802 次並統計中間 1,800 次。S6 的 72 小時穩定性測試不能用 1,002 次短時資料替代。

以下 5 個服務必須在相同 sample_no 下先求和,再計算統計指標:

cb_core
cb_nginx
cb_backend
ems_backend
ems_postgresql
AEMS_CPU_raw(n) = 同一 sample_no 下 5 個服務 CPU 之和
4核整機CPU(n) = AEMS_CPU_raw(n) ÷ 4
Edge-EMS Builder記憶體(n) = 同一 sample_no 下 5 個服務記憶體之和

報告至少給出平均、P95、P99 和峰值。不得把不同時間發生的 5 個服務獨立峰值直接相加。

trigger_per_sec 和 mqtt_per_sec 按時間升序排列後,同樣剔除首尾秒桶,避免資料庫查詢區間首尾不足一整秒。

任務秒桶與資源取樣次數不一定嚴格一一對應:某一秒可能沒有記錄,也可能因任務積壓而在下一秒集中完成。報告必須列出有效秒桶數量,並同時給出:

  • 每秒處理量平均值和相對目標的達成率;
  • 每秒平均 SpendTime 的平均、P50、P95、P99;
  • 所有秒桶中的單次最大 SpendTime;
  • 每秒平均 SpendTime 超過 200 ms 的秒數和比例。

如果某一完整秒內沒有任務記錄,吞吐統計應按 0 處理;該秒沒有可計算的時延,不應偽造為 0 ms。後續監控指令碼應輸出明確的統計視窗開始、結束時間,便於補齊空秒。

類別 需要統計
資料擷取 設定點數、成功點數、失敗和丟棄
Trigger 目標次數、實際次數、平均耗時、P50、P95、P99、最大值
MQTT / 協作 目標次數、實際次數、耗時、錯誤
CPU 完整 EMS Builder 的平均、P95 和峰值
記憶體 完整 EMS Builder 的平均、峰值和變化趨勢
磁碟 讀寫速率、I/O 等待、資料庫寫入狀態
Modbus 每個 Slave 的讀寫數量、失敗、超時和重試
穩定性 崩潰、OOM、異常重新啟動、持續積壓

關鍵計算:

正確率 = 成功數 ÷(成功數 + 失敗數 + 超時數 + 丟棄數)
達成率 = 實際每秒平均處理量 ÷ 場景目標

SpendTime 表示任務的實際執行耗時。報告不能只展示平均值,還必須展示 P95、P99 和最大值,以識別偶發的長時間延遲。

專案合同或驗收規範優先;沒有單獨約定時使用以下參考值。

項目 推薦標準
處理量 平均達成率 ≥ 99%
Trigger / MQTT 耗時 P95 < 200 ms
CPU 4 核裝置平均佔用 < 80%,無持續滿載
記憶體 整機平均佔用 < 70%,無持續增長
正確率 ≥ 99.99%,無未解釋丟棄
穩定性 連續 72 小時無崩潰、OOM 和異常重新啟動
恢復能力 壓力降低後 5 分鐘內恢復穩定
情況 處理
測試時間不足 標記“未完成”
20 個 Slave 未全部參與 重新測試
寫入集中在少數 Slave 調整分配後重測
壓力源或網路成為瓶頸 排除問題後重測
成功、失敗、超時資料缺失 標記“資料不完整”
S6 未執行 72 小時 不得寫“穩定性通過”

S4、S5 是壓力測試。達到系統邊界時應寫“達到壓力邊界”或“不建議持續執行”,不能寫成常規容量通過。

型號報告:

相關說明: