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