云端数据管理#
在云端管理数据时需要注意两个问题:
- 内存使用:处理大量数据的复杂工作流可能会超出 n8n 的内存限制。如果发生这种情况,实例可能会崩溃并变得无法访问。
- 数据存储:根据您的执行设置和规模,n8n 数据库可能会增长并耗尽存储空间。
为避免这些问题,n8n 建议您在构建工作流时考虑内存效率,不要保存不必要的数据。
各云套餐的内存限制#
当前套餐:
- 试用版:320MiB 内存,10 millicore CPU(可突发)
- 入门版:320MiB 内存,10 millicore CPU(可突发)
- Pro-1(1万次执行):640MiB 内存,20 millicore CPU(可突发)
- Pro-2(5万次执行):1280MiB 内存,80 millicore CPU(可突发)
- 企业版:4096MiB 内存,80 millicore CPU(可突发)
旧版套餐:
- 基础版:320MiB 内存,10 millicore CPU(可突发)
- 高级版:1280MiB 内存,80 millicore CPU(可突发)
n8n 为每个实例提供最多 100GB 的数据存储空间。
如何减少工作流内存消耗#
构建工作流的方式会影响执行时的数据消耗量。虽然这些指南并不适用于所有情况,但它们提供了避免超过实例内存限制的最佳实践基准。
- 将处理的数据拆分为更小的块。例如,每次执行不要获取10,000行数据,而是每次处理200行数据。
- 尽可能避免使用 Code 节点。
- 处理大量数据时避免手动执行。
- 将工作流拆分为子工作流,并确保每个子工作流向其父工作流返回有限的数据量。
拆分工作流起初可能看起来有违直觉,因为这通常需要至少添加两个节点:Loop Over Items 节点用于将项目拆分为更小的批次,以及 Execute Workflow 节点用于启动子工作流。
然而,只要您的子工作流为每个批次执行繁重的处理任务,然后仅向主工作流返回少量结果集,这就能降低内存消耗。因为子工作流在内存中只保留当前批次的数据,处理完成后内存就会被释放。
请注意,n8n 本身运行也需要消耗内存。平均而言,仅软件本身就需要约 180MiB 内存。
与用户界面的交互也会消耗内存。在执行繁重任务时操作工作流界面也可能使内存使用超过限制。
如何在 Cloud 版本中管理执行数据#
执行数据包括节点数据、参数、变量、执行上下文以及二进制数据引用。这些数据是基于文本的。
二进制数据是指 n8n 无法表示为纯文本的非文本数据,例如图像、文档、音频文件和视频等。这类数据比文本数据大得多。
如果某个工作流消耗大量数据且已通过测试阶段,停止保存成功执行记录是一个不错的选择。
您可以通过以下两种方式控制 n8n 在数据库中存储的执行数据量:
在管理员面板中:
- 从您的工作区或编辑器导航至 管理员面板
- 选择 管理
- 在 要保存的执行记录 中取消勾选您不想记录的执行类型
在工作流设置中:
- 点击 选项
菜单
- 选择 设置,n8n 将打开 工作流设置 弹窗
- 将 保存成功的生产执行记录 更改为 不保存
Cloud 数据清理与内存溢出预防#
自动数据清理#
n8n 会在达到以下任一条件时自动清理执行日志:超过指定时间或达到最大存储限制。清理总是从最旧的记录开始,具体限制取决于您的 Cloud 订阅计划:
- Start 和 Starter 计划:最多保存 2500 条执行记录,执行日志保留 7 天
- Pro 和 Power 计划:最多保存 25000 条执行记录,执行日志保留 30 天
- Enterprise 计划:最多保存 50000 条执行记录,执行日志保留时间无限制
手动数据清理#
尽管有自动清理机制,但在执行较重的工作流和使用场景时,仍可能超出数据库容量限制。在这种情况下,n8n 会手动清理数据以保护实例稳定性。
- 当实例磁盘容量达到 85% 时,告警系统会提醒 n8n
- n8n 会清理执行数据。具体操作是:先对实例进行备份(包括工作流、用户、凭据和执行数据),然后恢复一个不包含执行数据的版本
由于此过程涉及人工操作,告警系统并非完美无缺。如果告警在非工作时间触发,或者数据消耗速度过快,可能在剩余磁盘空间耗尽前来不及完成数据清理。