在批次處理期間於 Code 節點中處理大型 JSON 承載和記憶體限制

嗨各位,

我目前正在 n8n 中建立自動化工作流程來處理大型資料負載,但在高峰量任務期間遇到了執行瓶頸。

目前設置:

  • 自託管的 n8n 實例處理來自多個 webhook 和 API 端點的高頻傳入資料流。

  • 使用進階程式碼節點(JavaScript)來解析、轉換和重新結構化深度巢狀的 JSON 物件,然後將其推送至下游應用程式。

挑戰:

隨著批次大小增長,執行記憶體使用量會大幅上升。有時,大型資料陣列在單個程式碼節點執行區塊內一次處理大型項目結構時,會導致執行速度變慢或達到限制。

這個社群對於在 n8n 程式碼節點中高效分塊資料、管理記憶體開銷或最佳化大規模負載轉換,有什麼最佳實踐或工作流程設計模式可以推薦?

很樂意聽聽來自你們生產環境的任何提示或擴展策略。謝謝!

嘿 @Maaz,在等待回應的時候,以下這些資源可能對你有幫助:

建議的資源

自動符合你的問題。

文檔:

論壇:

@dmitrijz、@jabbson、@hubschrauber - 你們之前幫助解決過類似的問題,能看看嗎?

由 n8n 社群機器人自動建議。這是一個試用計劃 - 請在此分享反饋。

嗨 @Maaz
單獨使用「循環項目」不會降低尖峰記憶體使用量,該節點會保留原始輸入,並在完成輸出上重新組合每個已處理的批次,所以完整資料集仍然位於一個執行內。改為將轉換移出:使用批次大小在幾百個低位的「循環項目」,然後執行「執行子工作流程」,讓代碼節點的工作位於子工作流程中,並僅將較小的結果集返回到父級(ID、計數、狀態)。記憶體在每個批次後釋放,而不是一次持有所有項目。
透過觸發程序而非手動執行來執行這些操作,手動執行會使 n8n 在執行已保存的資料之外,複製資料供前端使用。
如果你要為這種負載的伺服器規格調整,這份資源涵蓋了: