部署托管/Scaling_and_performance
自托管的并发控制#
仅适用于自托管的 n8n 本文档介绍自托管环境下的并发控制。请阅读 云版并发控制 以了解 n8n Cloud 账户中的并发工作机制。
在常规模式下,n8n 不限制同时运行的生产环境执行(production executions)数量。这可能导致过多的并发执行任务阻塞事件循环(event loop),从而引发性能下降甚至服务无响应。
为避免此问题,您可以在常规模式下为生产环境执行设置并发限制。通过该设置,您可以控制同时运行的生产执行数量,超出限制的生产执行将被放入队列中。这些执行会保留在队列中,直到有可用的并发容量,然后按先进先出(FIFO)顺序处理。
默认情况下,并发控制是禁用的。要启用它,请执行以下操作:
1| ``` export N8N_CONCURRENCY_PRODUCTION_LIMIT=20
---|---
请注意:
* 并发控制**仅适用于生产环境执行**:即由 webhook 或 触发器节点 启动的执行。其他类型的执行不受影响,例如手动执行、子工作流执行、错误重试执行或通过 CLI 启动的执行。
* 您无法重试处于队列中的执行。取消或删除一个排队中的执行也会将其从队列中移除。
* 在实例启动时,n8n 将恢复最多达到并发限制数量的排队执行,其余执行将继续保留在队列中等待。
* 要监控并发控制状态,可查看日志中关于执行入队和释放的记录。未来版本中,n8n 将在用户界面(UI)中展示并发控制信息。
启用并发控制后,您可以在项目或工作流的“执行”标签页顶部查看当前活跃的执行数量以及配置的限制值。
## 与队列模式的对比#
在队列模式(queue mode)下,您可以使用 `--concurrency` 标志 来控制一个工作进程(worker)可同时运行的任务数量。
队列模式中的并发控制是独立于常规模式下并发控制的机制,但两者均由环境变量 `N8N_CONCURRENCY_PRODUCTION_LIMIT` 统一控制。在队列模式中,如果该变量被设置为非 `-1` 的值,n8n 将优先使用此变量中的限制值;否则将回退至 `--concurrency` 标志或其默认值。