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