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