處理大型資料時遇到連線中斷錯誤

我有一個工作流程需要處理大量資料(約48MB),這些資料來自子工作流程,但n8n在主工作流程中出現連線遺失錯誤。我認為它在那裡崩潰了,我無法縮小資料規模,因為我需要所有資料進行進一步處理。我們使用企業方案。請問還有什麼其他方法可以嘗試呢

看起來你已經達到了記憶體限制,@mylearnings_abu
這可能會有幫助

歡迎 @mylearnings_abu 加入我們的社區!我是 Jay,我是一個 n8n 認證創作者。

核心問題是 n8n 一次性將所有項目載入記憶體 - 48MB 的原始資料很容易達到限制。與其通過子工作流程輸出傳遞完整資料集,不如重新調整結構,讓子工作流程只返回 ID 或參考,然後在主工作流程中使用 Split in Batches 節點以批次方式處理實際資料(批次大小 50-100)。如果您需要針對每筆記錄擷取資料,可以在批次迴圈內使用 HTTP Request 或資料庫節點進行擷取。這樣無論總資料集大小如何,都能保持記憶體使用量穩定。

Hi @mylearnings_abu
这可能会有帮助:

實際上在我的情況中,子工作流程是從資料庫返回資料,所有這些資料都是需要的,然後再傳遞到進行一些操作的另一個子工作流程,所以我沒有辦法在48MB的限制內減少任何內容

另外,我還有一個類似的問題,如果我們在 S3 中有一個 JSON 文件(對象數組),我們如何按批次讀取數據?是不是要 GET 完整文件,然後執行批次處理?

嗨 @mylearnings_abu 你說得沒錯,你可以直接從 AWS S3 節點下載 JSON,檔案下載後,你可以使用「從檔案提取」節點來提取其 JSON 內容,提取完 JSON 後,你可以添加一個迴圈(這相當容易),或者設定一個程式碼節點,如果你想對資料執行一些特定操作的話。我馬上就能看到一個問題,就是你取得的檔案會很大,因為 n8n 目前不支援串流式部分讀取。所以要注意記憶體的使用量。

最好是重新設計你的工作流程,改為批次處理(擷取一些資料、處理它、重寫/修改),而不是擷取所有資料後再進行處理