已運行 n8n 單實例,開始遇到工作流排隊或執行工作互相爭用的開發者,可以依本文步驟評估是否切換。
準備並行處理 AI 工作流與其他自動化任務的小型團隊,可先釐清主程序、Worker 和 Redis 的分工。
負責 Docker Compose 與伺服器規劃的人員,可用檢查清單確認遷移條件和回復方式。
n8n 佇列模式部署:先判斷是否值得拆分
佇列模式讓主程序接收與管理工作流,再由 Worker 執行任務;Redis 負責佇列協調,資料庫則保存 n8n 所需的持續性資料。這是執行架構的拆分,不是單一工作流的加速開關。若瓶頸來自外部 API 回應慢、工作流步驟本身耗時,增加 Worker 未必能縮短那一項任務的完成時間。
開始評估前,先區分三種情況:任務長時間等待執行,可能是執行資源不足或工作量集中;單一工作流耗時,應先檢查步驟、外部服務與資料處理;主機 CPU、記憶體或磁碟持續吃緊,則要查清是否為整體資源瓶頸。應以佇列狀態、執行失敗記錄和主機監控共同判斷,不要只看一次尖峰就拆服務。
| 觀察到的狀況 | 優先檢查 | 隊列模式是否對症 |
|---|---|---|
| 多個工作流等待執行,尖峰時段反覆積壓 | 等待時間、執行記錄、Worker 可用資源 | 可評估拆分,並觀察任務能否平行執行 |
| 只有某一條工作流特別慢 | 慢在哪個節點、外部 API 回應、資料處理量 | 不一定;先找出單一流程的耗時原因 |
| 主機資源長時間緊繃或頻繁失敗 | CPU、記憶體、磁碟用量及錯誤日誌 | 可能需要調整執行架構,也可能先要補足主機資源 |
| 執行量小且沒有明顯排隊 | 現有執行記錄與監控趨勢 | 通常先保留單實例,避免增加 Redis 和維護負擔 |
n8n 單實例何時需要改成佇列模式?
可用以下條件作決策:
- 若多個工作流經常同時等待,且監控顯示執行工作互相爭用,進入遷移評估;先確認工作流是否可平行執行。
- 若只有個別流程慢,或等待主要來自外部服務,先調整該流程與外部連線,不要把佇列模式當成普遍提速方案。
- 若目前沒有可重現的積壓或失敗證據,保留單實例,持續記錄執行狀態和主機資源後再判斷。
- 若主機本身已無足夠資源承載更多執行工作,先評估資源餘量;增加 Worker 可能只會加重資料庫、Redis 和主機負擔。
遷移前的資料與版本核對
n8n 佇列模式需要哪些服務?
基本上要規劃主程序、Worker、Redis 與共用資料庫。主程序接收工作流與處理管理工作;Worker 取出佇列任務並執行;Redis 提供佇列所需的連線;共用資料庫讓相關 n8n 執行個體使用一致的持續性資料。實際資料庫類型與連線參數,應依官方支援的資料庫設定核對。
| 元件 | 部署前要確認的事項 | 常見疏漏 |
|---|---|---|
| 主程序 | 佇列模式已啟用;管理介面與工作流觸發可正常運作 | 主程序與 Worker 模式設定不一致 |
| Worker | 版本、資料庫、Redis 與加密設定對齊 | Worker 已啟動,但連到不同資料或佇列環境 |
| Redis | 主程序及 Worker 均能連線,認證和網路設定一致 | 只驗證主程序,漏查 Worker 的連線 |
| 資料庫 | 所有相關執行個體使用同一套受支援的資料庫設定 | 沿用不適用於目前部署的舊資料庫設定 |
| Task Runner | 若有啟用,核對 Runner 版本及其連線與執行模式 | 升級 n8n 後,Runner 映像或設定未同步 |
n8n 主程序和 Worker 怎麼連線?
主程序與 Worker 必須使用相同的 n8n 版本、共用資料庫與 Redis 連線設定,也必須配置一致的 N8N_ENCRYPTION_KEY。官方佇列模式文件說明,各 n8n 執行個體需要共用相同的加密金鑰;若金鑰不一致,憑證可能無法正常解密。Redis 的主機、連接埠和認證設定,也要在所有需要使用佇列的服務中保持一致。
Docker Compose 的服務框架可先按下列方式整理,但這不是可直接貼上的完整設定檔:
- 主程序:使用同一 n8n 版本,啟用佇列模式,連接共用資料庫與 Redis,保留必要的管理介面及觸發入口。
- Worker:使用相同 n8n 版本與共用環境設定,以 Worker 執行模式啟動;需要時再按實際負載調整並行設定。
- Redis 與資料庫:以 Compose 服務名稱或實際網路設定提供連線;為資料配置適合的持久化方式,另行規劃備份。
- Task Runner:若部署中有啟用,依官方 Task Runner 設定核對版本、啟動方式與連線。
- 環境變數:以佇列模式環境變數文件和當前版本說明為準,不要直接沿用未核對的舊版範例。
官方 Compose 教學列出的 n8n 網頁服務預設連接埠是 5678;Redis 常見預設連接埠是 6379,但部署可以自訂,必須以實際環境變數及容器網路設定為準。Compose 部署教學與佇列模式環境變數說明可用來對照這些參數。不要只因容器已啟動,就認定服務之間已連通。
n8n 佇列模式可以用檔案系統存二進位資料嗎?
不能把檔案系統儲存方式直接沿用到佇列模式。n8n 官方文件明確說明此限制;若工作流會處理檔案或其他二進位資料,遷移前要先依官方二進位資料文件確認支援的儲存方式,並驗證主程序、Worker 是否都能取得所需資料。不要只測純文字工作流,就推定檔案流程也已可用。
另外,先記錄目前 n8n 版本、部署方式、資料庫類型、資料目錄和加密金鑰保存位置。金鑰應另外妥善保管,不要只放在 Compose 檔案或與資料庫備份相同的位置;備份規劃可參考本站的資料處理說明,但仍須自行確認資料庫與設定檔能否實際還原。
Compose 啟動前的配置準備
先將服務拆分為可逐項核對的設定,不必一開始就增加多個 Worker。每增加一個執行元件,都要確認資料庫連線、Redis、加密金鑰、版本和網路路徑沒有分歧。Compose 的 depends_on 也不等同於服務已能正常回應;啟動後仍需檢查實際連線與日誌。
啟動前勾選以下項目:
- [ ] 記錄目前 n8n 版本、資料庫類型、部署檔案及環境變數。
- [ ] 確認主程序和 Worker 使用相同 n8n 版本、共用資料庫與 Redis 設定。
- [ ] 確認所有相關 n8n 執行個體使用相同的
N8N_ENCRYPTION_KEY。 - [ ] 核對二進位資料的儲存方式,排除不受佇列模式支援的檔案系統設定。
- [ ] 若有啟用 Task Runner,確認 Runner 版本與連線設定符合目前 n8n 版本的文件。
- [ ] 保存資料庫與部署設定的可還原副本,並單獨保管加密金鑰。
- [ ] 檢查 Compose 網路、服務名稱、連接埠與認證,確認主程序和 Worker 都能連到 Redis 及資料庫。
並行度不宜照抄範例值。工作流若大量等待外部服務,提高 Worker 並行度不一定能改善完成時間;若任務會同時大量讀寫資料庫,增加執行者還可能使資料庫負載升高。先以少量執行工作驗證架構,再依監控和錯誤記錄調整。官方併發控制說明可協助核對相關設定。
啟動後逐項驗證
Redis Worker 是否真的接到任務?
按照服務依賴逐項檢查,而不是一看到 Compose 顯示已啟動就結案:
- 先查 Redis:確認主程序和 Worker 的連線參數一致,服務端沒有認證、名稱解析或網路錯誤。
- 再查主程序:檢視啟動日誌,確認佇列模式設定已載入,且資料庫連線正常。
- 接著查 Worker:確認 Worker 已成功啟動、使用相同設定,日誌中沒有持續重連或解密錯誤。
- 最後跑測試工作流:選一條可重複、風險低的工作流,檢查佇列狀態、Worker 日誌、執行結果及管理介面記錄是否一致。
若任務進入佇列後一直沒有完成,先確認 Worker 是否註冊成功、其 Redis 與資料庫設定是否一致,再查執行錯誤和資料存取問題。不要未確認原因就增加 Worker 或調高並行度;任務若無法被 Worker 正常取得,擴充數量不會修正設定錯誤。
穩定運行後的擴充與回復
遷移驗收要看可核對的工作流執行記錄:任務是否進入佇列、是否由 Worker 執行、結果是否與管理介面一致,失敗時是否留下可追查的錯誤。穩定觀察期間,記錄佇列等待情況、失敗類型,以及 CPU、記憶體和磁碟使用趨勢;把短暫尖峰與持續積壓分開處理。
若工作流可平行執行、佇列持續積壓,且主機與資料庫仍有餘量,可逐步增加 Worker 或調整並行設定;每次調整後重新跑相同測試並比較結果。若 CPU、記憶體、磁碟或資料庫已長期受限,先評估底層資源,而不是把所有問題歸因於 Worker 數量。若執行量低、佇列沒有持續累積,則維持現狀更容易管理。
回復前要確認資料庫狀態與設定是否一致,避免切回單實例後遺留尚未處理的任務或執行資料。保留可還原的資料庫與設定副本,並確保加密金鑰可取得;同一部伺服器上的副本不等同於機外備份。n8n 升級、改動儲存方式或調整 Runner 後,都應重新驗證測試工作流與檔案處理流程。
如果目前使用的是共享 VPS,鄰居負載可能造成資源波動,資源上限或磁碟配置也可能限制持續增加 Worker;這些情況要和 n8n 本身的設定問題分開判斷。若監控顯示需要較穩定的獨享運算資源,可查看 XFP Cloud 的伺服器與系統選項,按實際工作流記錄核對 CPU、記憶體與儲存需求,再決定是否遷移。若工作量輕、沒有持續排隊,或只需短時間處理任務,保留現有方案通常更合適;若要比較長期租用的計費方式,也可先查看租用帳單說明。